对象属性引用JavaScript中的其他对象属性
Object properties referencing other object properties in JavaScript
我做:
outerobject={
a: 1,
b: 2,
c: this.a + this.b,
};
console.log(outerobject.a);
console.log(outerobject.b);
console.log(outerobject.c);
我期望:
1
2
3
我得到:
1
2
NaN
为什么我要获得NaN?
在对象this
中,为window
或全局对象分配了一个引用。您需要使用一个函数,该函数将使this
引用对象的引用。
var outerobject={ a: 1, b: 2, c: function(){return this.a + this.b}};
var outerobject2={ a: 1, b: 2, c: console.log(this)}; //logs window/global object
console.log(outerobject.c());//outputs 3
或者使用函数构造函数:
function MyObject(){
this.a = 1;
this.b = 2;
this.c = this.a + this.b;
console.log(this);
}
var myObject = new MyObject();
关键是function
决定了this
的作用范围。当函数被调用为对象的方法时,其this
被设置为该方法调用的对象
JS Fiddle:http://jsfiddle.net/aRFLn/
阅读更多
您可能想要获得属性值a
和b
的总和。你需要一个吸气剂:
var outerobject = {
a: 1, // inside a property value `this` is `window`
b: 2,
get c() {
return this.a + this.b; // inside a getter function 'this' is `outerobject`
}
};
然后您可以使用outerobject.c
。每次调用时,也会对其进行重新评估
outerobject.c; // 3
outerobject.a++;
outeobject.c; // 4
在您的情况下,"this"可以是任意数量的东西,具体取决于调用它的位置。在您的情况下,它很可能是window
对象。由于window
可能没有定义a
和b
,所以您得到了NaN
。
下面是一个很好的例子来说明它是如何工作的:http://www.quirksmode.org/js/this.html
相关文章:
- 如何从对象的原型方法访问JavaScript对象属性
- 如何将数组项添加到对象属性中
- 设置嵌套对象属性的更好方法
- JavaScript管理具有重复属性名称的对象属性
- 如何使用element.myobj.prop等具有对象属性的元素
- 如何使用(this)访问Angular 2 http rxjs catch函数中的对象属性
- Es6:能够在设置/更新/删除对象属性时调用自定义方法
- 如何在AngularJS工厂中正确声明对象属性
- 如何使用object.assign()从其他对象引用基本对象属性
- 使用XPath样式访问Javascript JSON对象属性
- 将javascript对象(属性+值)合并到一个对象中
- 数组:使对象属性成为数组键
- 无法从JavaScript中的函数调用对象属性
- Google Closure Advanced |无法识别对象属性|动态属性
- Javascript从匿名函数访问外部对象属性
- 从函数更改对象属性
- 如何从字符串变量访问对象属性
- 从嵌套对象属性中获取排除某个值的最高值
- 在Aurelia computeds中,当设置依赖关系时,如何声明对对象属性的依赖关系
- 传递数量不确定的可能嵌套的对象属性