name: “obj”,
getName: function(){
alert(this.name);
}
}
obj.getName(); //“obj”
等于
obj.getName.call(obj)
getName函数作为对象obj的方法调用,所以函数体中的this就代表obj对象。
当一个函数并非一个对象的属性时,那么它就是被当做函数来调用的。在此种模式下,this被绑定为全局对象,在浏览器环境下就是window对象。例如:
var name = “window”;
function getName(){
alert(this.name);
}
getName(); //“window”
obj.getName.call(window)
getName函数是一个单独函数(非某对象方法),所以创建后就归属到了window对象之下,调用时this指向window。
如果在一个函数前面加上new关键字来调用,那么就会创建一个连接到该函数的prototype成员的新对象,同时,this会被绑定到这个新对象上。这种情况下,这个函数就可以成为此对象的构造函数。例如:
function obj(){
this.name = “obj”;
}
var o = new obj();
alert(o.name); //“obj”