JavaScript中new和this

时间:2023-03-08 18:51:39
JavaScript中new和this

new

var obj = new Base();

相当于:

var obj  = {}; //创建空对象obj
obj.__proto__ = Base.prototype; //将空对象的__proto__成员指向Base对象的prototype成员对象
Base.call(obj);//类似完成了继承

如果我们给Base原型添加新方法:

Base.prototype.toString = function() {
return this.id;
}
var obj = new Base();//obj就会有toString方法

通过对原型的扩展,达到了设置类公共方法的目的,完成了类似继承的功能。

this

一般而言,在Javascript中,this指向函数执行时的当前对象。
该关键字在Javascript中和执行环境,而非声明环境有关。
var someone = {
name: "Bob",
showName: function(){
alert(this.name);
}
}; var other = {
name: "Tom",
showName: someone.showName
} other.showName();  //Tom
当没有明确的执行时的当前对象时,this指向全局对象window。
var name = "Tom";

var Bob = {
name: "Bob",
show: function(){
alert(this.name);
}
} var show = Bob.show;
show();  //Tom
得到对象内部变量,通过局部变量var接收数据
var name = "Bob";
var nameObj ={
name : "Tom",
showName : function(){
alert(this.name);
},
waitShowName : function(){
var that = this; //通过局部变量var接收
setTimeout(function(){
that.showName();
}, 1000);
}
}; nameObj.waitShowName();  //Tom

参考:motian06

参考