const
person = {
firstName: "John",
lastName : "Doe",
id : 5566,
fullName : function() {
return
this.firstName + " " +
this.lastName;
}
};
亲自试一试 »
在 JavaScript 中,this
关键字指的是对象。
哪个对象取决于如何this
正在被调用(使用或调用)。
这个this
关键字根据其使用方式指代不同的对象:
在对象方法中,this 指的是对象。 |
独自的,this 指的是全局对象。 |
在一个函数中,this 指的是全局对象。 |
在函数中,在严格模式下,this 是undefined 。 |
在一次活动中,this 指的是元素收到该事件的。 |
方法如call() ,apply() , 和bind() 可以参考this 到任何物体。 |
this
不是变量。这是一个关键字。您无法更改的值
this
。
当在对象方法中使用时,this
指的是对象。
在此页面顶部的示例中,this
指的是人目的。
因为全名方法是一种方法人目的。
fullName : function() {
return
this.firstName + " " +
this.lastName;
}
亲自试一试 »
单独使用时,this
指的是全局对象。
因为this
正在全局作用域内运行。
在浏览器窗口中,全局对象是[object Window]
:
在严格模式,单独使用时,this
也指全局对象:
在一个函数中,全局对象是默认绑定this
。
在浏览器窗口中,全局对象是[object Window]
:
JavaScript严格模式不允许默认绑定。
因此,当在函数中使用时,在严格模式下,this
是undefined
。
在 HTML 事件处理程序中,this
指的是接收事件的 HTML 元素:
在这些例子中,this
是person:
const
person = {
firstName : "John",
lastName : "Doe",
id : 5566,
myFunction : function() {
return
this;
}
};
亲自试一试 »
const
person = {
firstName: "John",
lastName : "Doe",
id : 5566,
fullName : function() {
return
this.firstName + " " +
this.lastName;
}
};
亲自试一试 »
this.firstName是this(person)的firstName属性。
这个call()
和apply()
方法是预定义的 JavaScript 方法。
它们都可以用于以另一个对象作为参数来调用对象方法。
下面的示例以 person2 作为参数调用 person1.fullName,this引用 person2,即使 fullName 是 person1 的方法:
const person1 = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
const person2 = {
firstName:"John",
lastName: "Doe",
}
// Return "John Doe":
person1.fullName.call(person2);
随着bind()
方法,一个对象可以借用另一个对象的方法。
此示例创建 2 个对象(人员和成员)。
成员对象借用了 person 对象的 fullname 方法:
const person = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this.firstName + " " + this.lastName;
}
}
const member = {
firstName:"Hege",
lastName: "Nilsen",
}
let fullName = person.fullName.bind(member);
亲自试一试 »
确定哪个对象this
指;使用以下优先顺序。
优先级 | 对象 |
1 | 绑定() |
2 | apply() 和 call() |
3 | 对象方法 |
4 | 全局作用域 |
是this
在使用bind()调用的函数中?
是this
在使用 apply() 调用的函数中?
是this
在使用 call() 调用的函数中?
是this
在对象函数(方法)中?
是this
在全局作用域内的函数中。
截取页面反馈部分,让我们更快修复内容!也可以直接跳过填写反馈内容!