浅谈 apply()方法与 call()方法
简介
在 JavaScript 中,函数就是一个对象,函数在没有返回值时默认返回一个对象。
当一个对象 A(this object) 没有某个方法,但是其他对象 B(other object) 有这一方法,我们可以借助
call()
方法或apply()
方法,用其它对象 B(other object) 的方法来操作。apply()
方法与call()
方法的第一个参数是对象 A(this object) ,第二个参数为传递给对象 B(other object) 的该方法的参数。形式为:
B.fn.apply(A,[arguments])
或者B.fn.call(A,arg1,arg2,arg3……)
代码
function person() {}
person.prototype = {
name: 'jack',
say: function () {
console.log('my name is' + this.name)
},
}
var goodPerson = new person()
goodPerson.say() // 打印 my name is jack
// 现在有一个对象 dog = {name:'wangwang'},
// 这条狗也想说话(拥有 say 方法),
// 那么我们可以这样 goodPerson.say.call(dog) 这样 dog 就可以说话了。
var dog = {
name: 'wangwang',
}
goodPerson.say.apply(dog) // my name is wangwang
goodPerson.say.call(dog) // my name is wangwang