JavaScript 这 关键词
什么是 这?
在 JavaScript 中, this
关键字指的是目的.
哪个 对象取决于如何this
正在被调用(使用或叫)。
这 this
关键字根据其使用方式指代不同的对象:
在对象方法中, this 指的是目的. |
独自的, this 指的是全局对象. |
在一个函数中, this 指的是全局对象. |
在函数中,在严格模式下, this 是undefined . |
在一次活动中, this 指的是元素 接收该事件的。 |
类似方法 call() , apply() , 和 bind() 可以参考this 到任何物体. |
笔记
this
不是变量。它是一个关键字。您不能更改this
.
这 在方法中
在对象方法中使用时, this
指的是目的.
在本页顶部的示例中, this
指的是人 目的。
因为 全名 方法是人 目的。
全名:函数(){
返回 这.firstName +“”+ 这。姓;
}
亲自尝试 »
这 独自的
单独使用时, this
指的是全局对象.
因为 this
正在全局范围内运行。
在浏览器窗口中,全局对象是 [object Window]
:
在 严格模式,单独使用时, this
也指全局对象:
这 在函数中(默认)
在一个函数中, 全局对象 是默认绑定this
.
在浏览器窗口中,全局对象是 [object Window]
:
这 在函数中(严格)
JavaScript 严格模式 不允许默认绑定。
因此,在严格模式下的函数中使用时, this
是undefined
.
这 在事件处理程序中
在 HTML 事件处理程序中, this
指的是接收事件的 HTML 元素:
对象方法绑定
在这些例子中, this
是个人对象:
IE 这个.firstName 是个名 的財產这 (人对象)。
显式函数绑定
这 call()
和apply()
方法是预定义的 JavaScript 方法。
它们都可以用于以另一个对象作为参数来调用一个对象的方法。
下面的例子使用 person2 作为参数来调用 person1.fullName, 这 指的是 person2,即使 fullName 是 person1 的方法:
例子
const person1 = {
全名:函数(){
返回 this.firstName + " " + this.lastName;
}
}
const person2 = {
名字:“约翰”,
姓氏:“Doe”,
}
// 返回“John Doe”:
人1.全名.呼叫(人2);
亲自尝试 »
函数借用
随着 bind()
方法,一个对象可以借用另一个对象的方法。
此示例创建了 2 个对象(person 和 member)。
member 对象从 person 对象借用了 fullname 方法:
例子
const 人 = {
名字:“约翰”,
姓氏:“Doe”,
全名:函数(){
返回 this.firstName + " " + this.lastName;
}
}
const 成员 = {
名字:“Hege”,
姓氏:“Nilsen”,
}
让 fullName = person.fullName.bind(member);
亲自尝试 »
这 优先级
确定哪个对象 this
指的是;使用以下顺序的优先顺序。
优先级 | 目的 |
1 | 绑定() |
2 | apply() 和 call() |
3 | 对象方法 |
4 | 全球范围 |
是 this
在使用 bind() 调用的函数中?
是 this
是否在使用apply()调用函数中?
是 this
是否在使用 call() 调用函数?
是 this
在对象函数(方法)中?
是 this
在全局范围内的函数中。