2

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

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

使用这样的东西:

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? */
};

>>小提琴<<

真实的对象(在真实的代码中)有一个 add 函数,它接受关于使用什么函数等的选项。它是“addEventListener”的一种包装,其中的重点是能够删除监听器 - 这需要非匿名功能参考。

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

4

2 回答 2

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();

这已经被问了很多次了:在声明对象时访问属性?

于 2013-04-11T01:49:55.553 回答
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/

于 2013-04-11T02:00:00.430 回答