Javascrip可以让它的对象属性引用函数,如示例所示。这会被认为是错误的,例如“资源繁重”或系统的任何其他繁琐方式:
var someGlobalVar = {
someElement: document.getElementById("someElementsID")
};
它可以工作,但我想知道是否每次引用对象时,或者仅在初始化时,或者何时引发此调用?可以这样写吗?
答案 0 :(得分:2)
var someGlobalVar = {
someElement: document.getElementById("someElementsID")
};
相当于:
var someGlobalVar = {
someElement:null
};
someGlobalVar.someElement = document.getElementById("someElementsID");
还可以:
var someGlobalVar = {
someElement:null,
setSomeElement:function(e) {
this.someElement = e;
}
};
someGlobalVar.setSomeElement(document.getElementById("someElementsID"));
答案 1 :(得分:2)
我想知道每次对象引用时是否会导致此调用
不,它没有。
或仅在初始化时
正确。
可以这样写吗?
当然,只要元素在您创建该对象时就存在。 (如果没有,getElementById
将返回null
。)
此代码:
var someGlobalVar = {
someElement: document.getElementById("someElementsID")
};
...如果它在全局范围内(从变量的名称,我认为是),就像这样处理:
将代码添加到全局环境(例如,通过script
标记)时,会创建一个名为someGlobalVar
的变量;它最初的值为undefined
。
当开始逐步执行该代码时(在处理完所有var
声明和函数声明之后),对象初始值设定项的处理如下:
someElement: document.getElementById("someElementsID")
:
document.getElementById("someElementsID")
部分,其中结果是属性值(元素引用,或null
)。someElement
和上一步中的属性值在对象上创建属性。someGlobalVar
。