在Object文字中调用了什么?

时间:2017-03-15 20:39:03

标签: javascript

所以我的问题是在方法中使用对象文字我看到人们在做'this.something = ...'

然后在整个对象中引用它。这是什么名字?

例如在下面的示例中,如果您查看'CacheDom'方法'this.button = document.getElementById('submit')'为我们提供了一个我们以后可以使用的参考。

我理解'this'关键字的基础知识,并在对象内部引用该对象,但我发现能够存储元素等并稍后引用它们会很奇怪。

基本上这是什么官方术语?

由于

https://jsfiddle.net/rvs6ymqj/

HTML

<body>
  <button id="submit" type="submit">Submit</button>
</body>

JS

var obj = {
  init: function() {
    this.cacheDom();
    this.bindEvents();
  },

  cacheDom: function() {
    this.button = document.getElementById('submit');
  },

  bindEvents: function() {
    this.button.addEventListener("click", function() {
      console.log("we clicked the button");
    })
  }
}

obj.init();

2 个答案:

答案 0 :(得分:1)

因语言而异。在Javascript中,它被称为property。在Java中,他们是fields。 C ++也称它们为字段,但它们也可以称为data members

JS与其他两个明显不同,Java和C ++强制您声明字段,而JS成员是动态定义的。实际上,JS对象只是从键到值的映射:属性是键。

答案 1 :(得分:1)

在面向对象编程中,“this”指的是你所在的对象。您没有在“this”中存储属性。它是一种区分全局变量/构造函数参数和同名实例变量的方法。我不认为“this”的概念有一个特定的名称,但是这句话总结得很好:

  

'this'通常是一个不可变的引用或指针,它引用当前对象

https://en.wikipedia.org/wiki/This_(computer_programming)

Javascript特定说明:

  

的JavaScript

     

当在任何函数之外使用时,在全局空间中,这指的是   封闭对象,在本例中是封闭的浏览器窗口,   窗口对象。在全局中定义的函数中使用时   space,这引用的关键字取决于函数的用途   调用。当直接调用这样的函数(例如f(x))时,这将是   返回参考定义函数的全局空间,和   其他全局函数和变量也可能存在(或在其中)   严格模式,它是未定义的)。如果是包含它的全局函数   作为文档中元素的事件处理程序的一部分调用   但是,这将引用调用HTML元素。当一个   然后使用new关键字调用method(例如var c = new Thing())   在Thing中,这指的是Thing对象本身。当一个功能   作为对象的属性附加并作为其方法调用   对象(例如obj.f(x)),这将引用该对象   功能包含在。甚至可以手动   通过使用.call()或.apply()调用函数时指定此项   函数对象的方法。例如,方法调用   obj.f(x)也可以写成obj.f.call(obj,x)。要解决   嵌套函数(如DOM事件)中的不同含义   处理程序,它是JavaScript中常见的成语保存   变量中的调用对象的引用(通常称为或   self),然后使用变量来引用调用对象   嵌套函数。