调用对象成员 - JavaScript

calling object members - javascript

本文关键字:JavaScript 成员 对象 调用      更新时间:2023-09-26

如果我有:

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...)apply(context,[args...])调用时,this就是context是什么。

this可以根据您调用函数的方式而更改:

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

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