注意: call()方法的作用和 apply() 方法类似,区别就是call()方法接受的是参数列表,而apply()方法接受的是一个参数数组。
Function.prototype.call()
call()方法使用一个指定的this值和单独给出的一个或多个参数来 调用一个函数(是一个调用函数的方法)
使用call()方法调用父构造函数
function Product(name, price) {
this.name = name;
this.price = price;
}
function Food(name, price) {
Product.call(this, name, price);
this.category = 'food';
}
var cheese = new Food('feta', 5);
使用call调用函数或匿名函数,并指定this
var obj = {
name: '张三',
age: 12
}; // 必须有分号‘;’,否则会报错
(function(isPerson){
if (isPerson) {
console.log('人名叫' + this.name + ',今年' + this.age)
}
}).call(obj, true)
function getInfo(sex, from) {
console.log('人名叫' + this.name + ',今年' + this.age + ',是' + sex + ',来自' + from)
}
getInfo.call(obj, '男孩', '亚特兰蒂斯')
若不指定第一个参数,this的值会绑定为全局对象
this.name = '李四';
this.age = 23;
function getInfo(sex, from) {
console.log('人名叫' + this.name + ',今年' + this.age)
}
getInfo.call()
Function.prototype.apply()
apply()使用一个给定的this和一个数组作为参数来调用一个函数
使用方法与call()类似