Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 这在对象文本中被称为什么?_Javascript - Fatal编程技术网

Javascript 这在对象文本中被称为什么?

Javascript 这在对象文本中被称为什么?,javascript,Javascript,所以我的问题是,当在方法中使用对象文字时,我看到人们在做“this.something=…” 然后在整个对象中引用它。这个叫什么名字 例如,在下面的示例中,如果您查看“CacheDom”方法“this.button=document.getElementById('submit')”为我们提供了一个参考,我们可以稍后使用 我了解“this”关键字的基本知识,在一个对象中它将引用该对象,但我发现能够存储元素等并在以后引用它们是很奇怪的 从本质上说,这是什么官方术语 谢谢 HTML 它因语言而异。

所以我的问题是,当在方法中使用对象文字时,我看到人们在做“this.something=…”

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

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

我了解“this”关键字的基本知识,在一个对象中它将引用该对象,但我发现能够存储元素等并在以后引用它们是很奇怪的

从本质上说,这是什么官方术语

谢谢

HTML


它因语言而异。在Javascript中,它被称为。在Java中,它们是。C++也可以调用它们,虽然它们也可以调用。
和java和C++的不同之处在于Java+C++强制你声明字段,而JS成员则是即时定义的。实际上,JS对象只是从键到值的映射:属性就是键。

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

“this”通常是指向当前对象的不可变引用或指针

特定于Javascript的解释:

JavaScript

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


面向对象编程?this的官方术语是“this”。有些人说“上下文”,这既不正式也不精确。更正确的说法可能是“接收者”,但这也不是官方说法。“但是我发现能够存储元素等并在以后引用它们是很奇怪的”如果
this
的值是一个对象(它不一定是),那么您只是将属性分配给一个对象。这与使用
obj
而不是
this
obj.foo=42没有区别
(如果obj指的是一个对象)。嘿,是的,当你说“为一个对象分配属性”时,这是有道理的。我想这是因为我习惯于使用冒号定义属性,而不是像那样添加属性。谢谢
这个
在对象文本中没有什么特殊之处。但是,在对象方法中使用时,它确实有意义
<body>
  <button id="submit" type="submit">Submit</button>
</body>
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();