初始化时引用自己的属性

时间:2013-04-11 01:42:03

标签: javascript

可以在对象初始化时引用自己的属性吗?

我有一个应该是唯一的对象,并且只存在于一个所以我 没有初始化器等。

使用类似的东西:

var Myobj = {
    property1 : aaa,
    property2 : bbb,
    property3 : {a: self.property1 }
                /*  ^-- is this somehow possible without using a function? 
                        Or a better way to solve / structure this. .init() 
                        best option? */
};

>> Fiddle<<

real 对象(在实际代码中)有一个add选项,可以选择 使用什么功能等。它是“addEventListener”的包装器 关键是能够删除监听器 - 这需要非匿名功能 参考

Myobj 中使用的函数由字符串或选项中的数字键指定 Myobj.add()

2 个答案:

答案 0 :(得分:1)

Object literals在结束undefined之前保持},因此您必须使property3成为函数或使整个对象成为函数。

var Myobj = {
    property1 : 'aaa',
    property3 : function (){ return { a : this.property1 } }
};

var MyObj = function(){
  this.property1 = 'aaa',
  this.property3 = { a: this.property1 }
}
var MyObjInstance = new MyObj();

这已被问过很多次:Access properties while declaring object?

答案 1 :(得分:0)

如果您使用占位符数组,它会起作用:

var prop = new Array();
var Myobj = {
    property1 : 'aaa',
    property2 : 'bbb',
    property3 : {a: prop}
};
prop.push(Myobj.property1);

window.alert(Myobj.property3.a);

http://jsfiddle.net/y2XwC/1/