Javascript 初始化时引用自己的属性
在初始化对象时可以引用自己的属性吗 我有一个对象,它应该是唯一的,并且只作为一个存在,所以我 没有初始值设定项等 使用类似这样的方法:Javascript 初始化时引用自己的属性,javascript,Javascript,在初始化对象时可以引用自己的属性吗 我有一个对象,它应该是唯一的,并且只作为一个存在,所以我 没有初始值设定项等 使用类似这样的方法: var Myobj = { property1 : aaa, property2 : bbb, property3 : {a: self.property1 } /* ^-- is this somehow possible without using a function?
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? */
};
>
对象文本
在关闭前保持未定义
,因此您必须将属性3设置为函数或将整个对象设置为函数
var Myobj = {
property1 : 'aaa',
property3 : function (){ return { a : this.property1 } }
};
或
这已经被问了很多次了:如果使用占位符数组,它会起作用:
var prop = new Array();
var Myobj = {
property1 : 'aaa',
property2 : 'bbb',
property3 : {a: prop}
};
prop.push(Myobj.property1);
window.alert(Myobj.property3.a);
不,如果没有程序代码,这将不起作用。您不能从对象内部引用尚未完全初始化并分配给变量的对象的其他部分。很抱歉,这里重复了。我的搜索短语不知怎么漏掉了这一点。别担心,这有点难找到,因为还有很多其他的问题,包括“对象”、“属性”、“引用”和“初始化”。我知道有一个复制品存在(因为我以前见过它),但我还是花了一段时间才找到它。我的答案无效吗?谢谢@deceze,你在这里的评论中给出了一些见解。我将学习init()函数中的过程代码。谢谢。相信我现在看得更清楚了。只需决定要使用的设计。您的
var a
与Myobj.property3.a
不同。两者的可见性/范围非常不同。我的错误,已更新以反映属性3.a您仍然必须像Myobj.property3().a
一样访问它,这与Myobj.property3.a
不同。是的,但这是一种折衷。有趣的方法。我不相信我会在这种情况下使用它,但如果它合适的话,我会把它作为一个设计选项一直记住。这使得Myobj.property3.a[0]='aaa'
。与Myobj.property3.a=='aaa'@deceze不同,它不需要索引就可以工作。这取决于如何定义“工作”。它是一个数组,所以像Myobj.property3.a.substr(1)
这样的东西不起作用。好处是数组是可变的,因此他可以在以后更改值:
var prop = new Array();
var Myobj = {
property1 : 'aaa',
property2 : 'bbb',
property3 : {a: prop}
};
prop.push(Myobj.property1);
window.alert(Myobj.property3.a);