JavaScript 函数 call()
方法重用
使用 call()
方法,你可以编写一个可以在不同对象上使用的方法。
所有函数都是方法
在 JavaScript 中,所有函数都是对象方法。
如果一个函数不是 JavaScript 对象的方法,那么它是全局对象的函数(参见上一章)。
下面的示例创建了一个具有 3 个属性的对象,firstName、lastName、fullName。
示例
const person = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this.firstName + " " + this.lastName;
}
}
// 这将返回 "John Doe"
person.fullName();
亲自试一试 »
在上面的示例中,this
指的是 person 对象。
this.firstName 表示 this 的 firstName 属性。
与
this.firstName 表示 person 的 firstName 属性。
什么是 this?
在 JavaScript 中,this
关键字指的是一个 对象。
根据使用方式的不同,this
关键字指的是 不同的对象
在对象方法中,this 指的是 对象。 |
单独使用,this 指的是 全局对象。 |
在函数中,this 指的是 全局对象。 |
在函数中,在严格模式下,this 是 undefined 。 |
在事件中,this 指的是 接收事件的元素。 |
像 call() 、apply() 和 bind() 这样的方法可以将 this 指向 任何对象。 |
JavaScript call() 方法
call()
方法是一个预定义的 JavaScript 方法。
它可以用来调用一个方法,并将所有者对象作为参数(参数)传递给它。
使用 call()
,一个对象可以使用另一个对象的方法。
此示例调用 person 的 fullName 方法,并在 person1 上使用它
示例
const person = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
const person1 = {
firstName:"John",
lastName: "Doe"
}
const person2 = {
firstName:"Mary",
lastName: "Doe"
}
// 这将返回 "John Doe"
person.fullName.call(person1);
此示例调用 person 的 fullName 方法,并在 person2 上使用它
示例
const person = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
const person1 = {
firstName:"John",
lastName: "Doe"
}
const person2 = {
firstName:"Mary",
lastName: "Doe"
}
// 这将返回 "Mary Doe"
person.fullName.call(person2);
带有参数的 call() 方法
call()
方法可以接受参数
示例
const person = {
fullName: function(city, country) {
返回 this.firstName + " " + this.lastName + "," + city + "," + country;
}
}
const person1 = {
firstName:"John",
lastName: "Doe"
}
person.fullName.call(person1, "Oslo", "Norway");