call、apply、bind三者都可以改变this的指向,三者的第一个参数都是用来改变this的指向
不同的是,apply的第二个参数接受的是一个数组,而call和bind接受的则是连续的参数
var name = 'aaa'
var age=20
var obj = {
name:'xxx',
objAge:this.age,
myFun:function(fm,t){
console.log(this.name+'年龄'+this.age+',来自'+fm+'去往'+t)
}
}
var db = {
name:'yyy',
age:18
}
复制代码
obj.objAge; //20
obj.myFun(); //xxx年龄undefined,来自undefined去往undefined
obj.myFun.call(db); //yyy年龄18,来自undefined去往undefined
obj.myFun.apply(db); //yyy年龄18,来自undefined去往undefined
obj.myFun.bind(db)(); //yyy年龄18,来自undefined去往undefined
obj.myFun.call(db,'成都','上海'); //yyy年龄18,来自成都去往上海
obj.myFun.apply(db,['成都','上海']); //yyy年龄18,来自成都去往上海
obj.myFun.bind(db,'成都','上海')(); //yyy年龄18,来自成都去往上海
obj.myFun.bind(db,['成都','上海'])(); //yyy年龄18,来自成都,上海去往undefined
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END