javascript - dom 是如何在对象字面量的函数之间缓存的? (Javascript)

标签 javascript dom design-patterns

好吧,我不确定这篇文章的标题是否正确地表达了我的意思,我很确定我已经知道这个问题的答案,但我只是想要一些澄清。

如果我有一个这样的项目

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/

相关文章:

javascript - 检测异步调用完成,然后触发另一个函数?

javascript - 将 getRange 与 Shadow DOM 中的两个元素之一一起使用

html - 您是否仍然可以影响显示 : none? 的元素的状态

asp.net-mvc - ASP.NET MVC - Controller 中应该存在业务逻辑吗?

c++设计模式问题。单一接口(interface)多种实现?

javascript - 为什么 javascript 行必须在函数中才能工作?

javascript - 简单赋值帮助 : Calling the function to pass it a parameter and to get its return value

delphi - 在 Delphi 窗体上的控件旁边添加验证器符号

javascript - 无法使用 jQuery 添加单选按钮值

java - 如何使用 HTML5 数据属性获取 session 属性