对象的属性设置为本机函数调用,错误的做法?

时间:2016-06-08 09:30:32

标签: javascript

Javascrip可以让它的对象属性引用函数,如示例所示。这会被认为是错误的,例如“资源繁重”或系统的任何其他繁琐方式:

var someGlobalVar = {
    someElement: document.getElementById("someElementsID")
};

它可以工作,但我想知道是否每次引用对象时,或者仅在初始化时,或者何时引发此调用?可以这样写吗?

2 个答案:

答案 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")
};

...如果它在全局范围内(从变量的名称,我认为是),就像这样处理:

  1. 将代码添加到全局环境(例如,通过script标记)时,会创建一个名为someGlobalVar的变量;它最初的值为undefined

  2. 当开始逐步执​​行该代码时(在处理完所有var声明和函数声明之后),对象初始值设定项的处理如下:

    1. 创建对象。
    2. 评估属性初始值设定项someElement: document.getElementById("someElementsID")
      1. 评估document.getElementById("someElementsID")部分,其中结果是属性值(元素引用,或null)。
      2. 使用名称someElement和上一步中的属性值在对象上创建属性。
    3. 对象的引用将保存到变量someGlobalVar