[英]Javascript Object Literal referring to another property in itself from another property
I have a object literal: 我有一个对象字面值:
var obj = {
a : document.getElementById("ex1"),
b : obj.a.document.getElementsByTagName("div")
};
I am having trouble with the b property, for some reason it is not letting that happen. 我遇到了b属性的问题,出于某种原因它不会让这种情况发生。 Is this possible? 这可能吗?
You need two steps: 你需要两个步骤:
var obj = {
a : document.getElementById("ex1")
};
obj.b = obj.a.document.getElementsByTagName("div")
Or: 要么:
var temp = document.getElementById("ex1")
var obj = {
a : temp,
b : temp.document.getElementsByTagName("div")
};
When the property b
is being defined, obj
is not defined yet. 在定义属性b
,尚未定义obj
。 One way to get around that problem is to make your property a function so that it's not evaluated until called. 解决该问题的一种方法是使您的属性成为一个函数,以便在调用之前不对其进行求值。
var obj = {
a : document.getElementById("ex1"),
b : function() {
// This is not evaluated until obj.b() is called
return obj.a.document.getElementsByTagName("div");
}
};
obj.b();
If you really want it to be a property, you have to do it in two steps as Tomasz Nurkiewicz shows 如果你真的希望它成为一个属性,你必须分两步完成,如Tomasz Nurkiewicz所示
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.