Javascript对象文字从另一个属性引用另一个属性本身
我有一个对象文字:Javascript对象文字从另一个属性引用另一个属性本身,javascript,object,Javascript,Object,我有一个对象文字: var obj = { a : document.getElementById("ex1"), b : obj.a.document.getElementsByTagName("div") }; 我有麻烦与b财产,出于某种原因,它不让这种情况发生。这可能吗?您需要两个步骤: var obj = { a : document.getElementById("ex1") }; obj.b = obj.a.document.getElementsByTa
var obj = {
a : document.getElementById("ex1"),
b : obj.a.document.getElementsByTagName("div")
};
我有麻烦与b财产,出于某种原因,它不让这种情况发生。这可能吗?您需要两个步骤:
var obj = {
a : document.getElementById("ex1")
};
obj.b = obj.a.document.getElementsByTagName("div")
或:
定义属性
b
时,obj
尚未定义。解决这个问题的一种方法是将您的属性设置为函数,以便在调用之前不会对其求值
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();
如果您真的希望它成为一个属性,则必须分两步进行,如图所示。现代的方法是使用以下方法:
因此,现在您可以只编写
obj.fullName
——不需要在末尾加括号。您可以在支持它的浏览器中使用avar obj={a:document.getElementById(“ex1”),get b(){return this.a.document.getElementsByTagName(“div”)}
@Pumbaa80由支持它的浏览器命名,你是说仅限Firefox???更好的方法是使用Object.defineProperty
,因为它在所有浏览器的最新版本中都可用,但这也需要多个步骤。实际上,考虑到JavaScript的最新更新,所有浏览器(可能重复的除外)都应该被接受为正确答案。而且,这是一个强大的特性,应该在开发人员中传播。
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();
let obj = {
firstName: "A’dab",
lastName: "Farooqi"
get fullName() {
return this.firstName+" "+this.lastName;
},
}