调用对象成员 - javascript

时间:2012-05-07 15:33:52

标签: javascript

如果我有:

var obj={
    a:function(){obj.b();},
    b:function(){this.a();}
};

调用对象方法与"这个"有什么区别吗?或直接引用对象本身,因为它与方法的范围相同?

3 个答案:

答案 0 :(得分:3)

Depends中

this可以采用多种形式,使其无法预测:

  • 在正常的函数调用中,如funcName()this是全局对象。在浏览器中,它是window对象。

  • 在函数使用“use strict”的普通函数调用中,thisundefined

  • 对于用作构造函数的函数,如var instance = new ConstructorFunction()this将引用从该构造函数创建的实例对象。

  • 对于对象文字,this是包含该函数的直接对象文字。

  • call(context,args...)apply(context,[args...])来电时,thiscontext的任何内容。

答案 1 :(得分:2)

this可能会根据您调用函数的方式而改变:

var funnyB = obj.b;
funnyB();  //this is window

答案 2 :(得分:0)

在您提供的对象文字上下文中,没有逻辑差异。 this关键字指向obj变量,因为this是对函数是其属性/方法的对象的引用。