如果我有:
var obj={
a:function(){obj.b();},
b:function(){this.a();}
};
用“this”调用对象方法或直接引用对象本身有什么区别,因为它与方法在同一范围内?
如果我有:
var obj={
a:function(){obj.b();},
b:function(){this.a();}
};
用“this”调用对象方法或直接引用对象本身有什么区别,因为它与方法在同一范围内?
依靠
this可以采取多种形式,使其不可预测:
在普通函数调用中,如funcName(),this是全局对象。在浏览器中,它是window对象。
在函数使用“use strict”的普通函数调用中,this是undefined.
对于用作构造函数的函数,如var instance = new ConstructorFunction(),this将引用从该构造函数创建的实例对象。
对于对象字面量,this是包含函数的直接对象字面量。
call(context,args...)当由or调用时apply(context,[args...]),this不管context是什么。
this可以根据您调用函数的方式而改变:
var funnyB = obj.b;
funnyB(); //this is window
在您提供的对象文字上下文中,没有逻辑上的区别。this关键字指向obj变量,因为this是对函数是属性/方法的对象的引用。