调用对象成员 - JavaScript
calling object members - javascript
如果我有:
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
是对函数所属属性/方法的对象的引用。
相关文章:
- 如何在 JavaScript 中“获取”成员变量
- 使用私有成员创建JavaScript类
- 为什么在这种情况下,“This”确实充当javascript函数中的私有成员
- 用javascript在html显示列表中显示新成员
- Javascript映射对象成员以返回新的扁平对象
- 成员函数中的Javascript“this”object==“window”
- 加载成员路由后通过JavaScript初始化
- JavaScript 对象中的私有成员,带有 getter 和 setter
- 如何在javascript中实现基本成员
- 使用JSON/JavaScript将成员添加到Office 365组
- 从JavaScript对象访问数据's数组成员变量
- 在 javascript 中使用私有成员和方法
- 在 JavaScript 中,如何有条件地向对象添加成员
- 在dojo模块中引用父级的JSON/javascript成员函数
- 声明JavaScript成员函数的最佳实践
- 学习Javascript:成员数组声明后的逗号
- 函数调用后未更新Javascript成员
- Javascript成员函数声明
- 调用变量中命名的对象的Javascript成员函数
- 如何从外部访问这些JavaScript成员函数