所以我的问题是在方法中使用对象文字我看到人们在做'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();
答案 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),然后使用变量来引用调用对象 嵌套函数。