Javascript 对象';s属性设置为本机函数调用,错误做法?
Javascrip可以让对象的属性引用函数,如示例所示。这是否会被认为是错误的,如“资源密集型”或以任何其他方式对系统造成不便:Javascript 对象';s属性设置为本机函数调用,错误做法?,javascript,Javascript,Javascrip可以让对象的属性引用函数,如示例所示。这是否会被认为是错误的,如“资源密集型”或以任何其他方式对系统造成不便: var someGlobalVar = { someElement: document.getElementById("someElementsID") }; 它是有效的,但我想知道它是否会导致每次对象被引用时都进行此调用,或者仅在初始化时进行,或者何时进行?这样写可以吗 var someGlobalVar = { someElement: docu
var someGlobalVar = {
someElement: document.getElementById("someElementsID")
};
它是有效的,但我想知道它是否会导致每次对象被引用时都进行此调用,或者仅在初始化时进行,或者何时进行?这样写可以吗
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"));
相当于:
var someGlobalVar = {
someElement:null
};
someGlobalVar.someElement = document.getElementById("someElementsID");
还可以:
var someGlobalVar = {
someElement:null,
setSomeElement:function(e) {
this.someElement = e;
}
};
someGlobalVar.setSomeElement(document.getElementById("someElementsID"));
我想知道它是否会导致每次引用对象时都进行此调用
不,没有
或者仅在初始化时
对
这样写可以吗
var someGlobalVar = {
someElement: document.getElementById("someElementsID")
};
当然,前提是在创建该对象时元素将存在。(如果没有,则getElementById
将返回null
)
此代码:
var someGlobalVar = {
someElement: document.getElementById("someElementsID")
};
…是这样处理的,如果它在全局范围内(根据变量的名称,我假设它是):
脚本
标记),将创建名为someGlobalVar
的变量;它最初的值为未定义
var
声明和函数声明都已处理之后),对象初始值设定项的处理方式如下:
someElement:document.getElementById(“someElementsID”)
的计算结果如下:
document.getElementById(“someElementsID”)
部分,其结果是属性值(元素引用,或null
)someElement
和上一步中的属性值在对象上创建的someGlobalVar
var someGlobalVar = {
someElement: document.getElementById("someElementsID")
};
当然,前提是在创建该对象时元素将存在。(如果没有,则getElementById
将返回null
)
此代码:
var someGlobalVar = {
someElement: document.getElementById("someElementsID")
};
…是这样处理的,如果它在全局范围内(根据变量的名称,我假设它是):
脚本
标记),将创建名为someGlobalVar
的变量;它最初的值为未定义
var
声明和函数声明都已处理之后),对象初始值设定项的处理方式如下:
someElement:document.getElementById(“someElementsID”)
的计算结果如下:
document.getElementById(“someElementsID”)
部分,其结果是属性值(元素引用,或null
)someElement
和上一步中的属性值在对象上创建的someGlobalVar
在本例中,
someElement
引用了一个DOM元素(不是您提到的函数)。它引用了一个返回DOM元素对象的本机函数调用……但是它是否会损害系统,它会被“调用”吗我一直在使用这个对象,还是将它设置一次并用它完成?就像其他表达式一样,它被计算,然后计算的结果被分配给lhs(接收者)。你不明白我问的是什么,它是在每次调用对象时进行计算还是只进行一次计算?我基本上是这样做的。请再次阅读我的评论。我明确表示,评估结果分配给lhs。PS:对象不被“调用”。在这种情况下,someElement
指的是一个DOM元素(不是你提到的函数)。它指的是一个返回DOM元素对象的本机函数调用……但是它是否会损害系统,它会被“调用”吗我一直在使用这个对象,还是将它设置一次并用它完成?就像其他表达式一样,它被计算,然后计算的结果被分配给lhs(接收者)。你不明白我问的是什么,它是在每次调用对象时进行计算还是只进行一次计算?我基本上是这样做的。请再次阅读我的评论。我明确表示,评估结果分配给lhs。PS:对象没有被“调用”。谢谢你的正确回答。不用担心,@zerkms是正确的-在lhs中,他指的是左手边,所以就你的问题而言:someElement=document.getElementById()的结果,而不是函数本身,因此为什么它们是等价的(getElementById()是函数)有一件事,他的回答没有提到,而你的回答没有提到,这就是“时间”方面,以及回忆方面。有了你所说的,很明显表达式只会被计算一次,永远不会再被计算,一旦对象被实例化,它就会被计算,他的“计算结果被分配给LHS”问题“何时”和“多少次”都没有得到回答。如果你明白我的意思。我不是说这是错的,它只是让这两个问题悬而未决,而这样的答案,消除了任何疑问谢谢你的正确回答。不用担心,@zerkms是正确的-lhs的意思是左手边,所以就你的问题而言:someElement=document.getElementById()的结果,而不是函数本身,因此它们是等价的(getElementById()是函数),有一件事他的答案没有解决,而你的答案解决了,