创建对象时引用属性
Reference property when creating object
如何在创建对象本身时引用对象的属性?下面的例子不能工作:
var object = {
prop1 : $(this).find('.foo');
prop2 : this.prop1.find('.bar');
}
您可以将新关键字与匿名函数一起使用:
var $self = $(this);
var object = new function () {
this.prop1 = $self.find('.foo');
this.prop2 = this.prop1.find('.bar');
};
从技术上讲,该对象将具有与对象字面量不同的constructor
属性,但这在大多数用例中不太可能引起问题。
作为一个简单的演示:
var obj = new function () {
this.x = 7;
this.y = this.x * 2;
};
console.log(obj); // Object {x: 7, y: 14}
不能引用尚未创建的对象的属性。你可以有一个函数,它将在对象创建后被调用。因此,您可以使用this
来引用property
。
像风箱:-
obj = {
a1:3,
a2:function(){return this.a1}
};
所以调用obj.a2()
将返回3
。
或者,如果你不想调用function
,使用Get
obj = {
a1:3,
get a2(){return this.a1}
};
obj.a2; //returns 3
get
的基本功能它将一个对象属性绑定到一个函数,该函数在查找该属性时将被调用
这可能会有帮助
var obj = {
prop1 : $(this).find('.foo');
prop2 : function() { return this.prop2.find('.bar'); }
};
我假设您有兴趣避免重新计算$(this).find('.foo')
,在这种情况下,您可以这样做:
var object = (function() {
var prop1 = $(this).find('.foo'),
prop2 = prop1.find('bar');
return {
prop1: prop1,
prop2: prop2
};
}.bind(this);
相关文章:
- 无法获取属性'selectedIndex'的未定义引用或null引用
- 无法获取属性'Id'使用Knockout.js的未定义或空引用API
- 如何正确引用传递到淘汰中的当前元素的属性.JS
- 如何使用object.assign()从其他对象引用基本对象属性
- 引用Ractive.js中的子属性
- 无法获取属性'字符串'的未定义或null引用IE 11 ASP.NET
- 使用闭包创建原型中引用的私有属性
- SCRIPT5007:无法获取属性'长度'的未定义引用或null引用
- 无法获取属性'setActionableButtonState'的未定义引用或null引用
- 传递引用 jQuery 后无法访问元素属性
- 对象属性引用JavaScript中的其他对象属性
- 函数作为对象中的属性:引用函数内部的其他属性
- 从另一个属性引用js属性的正确方式
- 使用Aurelia's ref属性引用元素的视图模型
- 在javascript中分配属性引用
- 当对象属性引用对象本身(self reference)时,Javascript内存泄漏
- angular ng-repeat内部的动态属性引用
- 如何从p:对话头属性引用javascript变量
- 如何通过属性引用javascript对象's onclick方法
- 动态地从对象循环键传递属性引用