改变函数的this指向
let obj={
a:'wsx',
say:function(n1,n2,n3){
console.log(this.a,n1,n2,n3);
}
}
let newObj={
a:'cxc',
}
obj.say(1,2,3) //打印wsx 1 2 3
obj.say.call(newObj,1,2,3) //打印cxc 1 2 3
obj.say.apply(newObj,[1,2,3])//打印cxc 1 2 3
obj.say.bind(newObj,1,2,3)()//打印cxc 1 2 3
封装的call()函数改变他的this指向
let obj={
a:'wsx',
say:function(n1,n2,n3){
console.log(this.a,n1,n2,n3);
}
}
let newObj={
a:'cxc',
}
function say1(date){
console.log(date);
}
// obj.say(1,2,3) //打印wsx 1 2 3
// obj.say.call(newObj,1,2,3) //打印cxc 1 2 3
// obj.say.apply(newObj,[1,2,3])//打印cxc 1 2 3
// obj.say.bind(newObj,1,2,3)()//打印cxc 1 2 3
//封装一个call()函数
// 将call函数挂在到function的原型链上
Function.prototype.mycall=function(opt,n1,n2,n3){
console.log(opt[this.name]=this);
console.log(newObj);
}
// say1.prototype.yourcall=function(date){
// console.log(date);
// }
// console.log(this.say1.mycall(666));
obj.say.mycall(newObj,1,2,3)