好吧,我不确定这篇文章的标题是否正确地表达了我的意思,我很确定我已经知道这个问题的答案,但我只是想要一些澄清。
如果我有一个这样的项目
var myObj = {
settings : {
domObj = document.getElementById('elem1');
},
myFunc1 : function () {
return this.domObj;
},
myFunc2 : function () {
return this.domObj;
}
}
myObj.myFunc1();
myObj.myFunc2();
domObj 是在第一次访问时缓存,还是在两个函数中都遍历了 dom?我只尝试访问 Dom 一次,但不确定这是否是一个可能的解决方案。
最佳答案
假设你真的是这个意思:
var myObj = {
settings : function() {
domObj = document.getElementById('elem1');
},
myFunc1 : function() {
return this.domObj;
},
myFunc2 : function() {
return this.domObj;
}
};
答案是“domObj”是一个全局变量因为您忘记了 var
关键字。现在,您的意思可能是这样:
var myObj = {
domObj: null,
settings : function() {
this.domObj = document.getElementById('elem1');
},
myFunc1 : function() {
return this.domObj;
},
myFunc2 : function() {
return this.domObj;
}
};
在这种情况下,“domObj”只是“myObj”的属性。如果你打电话它就会被设置
myObj.settings();
关于javascript - dom 是如何在对象字面量的函数之间缓存的? (Javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3900455/