call、apply、bind的用法

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
喜欢就支持一下吧
点赞0 分享