call()允许将属于一个对象的函数/方法分配给另一个对象并对其进行调用。
function Product(name, price) {
this.name = name;
this.price = price;
}
function Food(name, price) {
Product.call(this, name, price);
this.category = "food";
}
document.write(new Food("cheese", 12).name);
示例中call()向函数/方法提供一个新的值this。 通过调用,您可以编写一次方法,然后在另一个对象中继承该方法,而不必为新对象重写该方法。
使用调用来链接对象的构造函数
您可以使用call()来链接对象的构造函数,类似于Java。
function Product(name, price) {
this.name = name;
this.price = price;
}
function Food(name, price) {
Product.call(this, name, price);
this.category = "food";
}
function Toy(name, price) {
Product.call(this, name, price);
this.category = "toy";
}
let cheese = new Food("cheese", 12);
let robot = new Toy("robot", 85);
使用调用来调用函数而不指定参数
在下面的示例中,我们在不传递参数的情况下调用了display函数:
var name = "Seagull";
function display() {
document.write(this.name);
}
display.call();