js-apply call bind 浅析
作用一:将对象的方法借用给另一个对象使用。
使用案例一 区分 bind 和 apply和call 的区别:// 对象一
var boyA= { name:"张无忌", age:20, hobby:["撩妹","打太极","游山玩水"], say:function(){ return '在下' + this.name + ',今年'+this.age } } // 对象二 boyB ={ name:"令狐冲", age:21, hobby:["喝酒","练剑","赌博"] } // 在此新建了两个对象,如果想让boyB对象拥有boyA对象的say方法,该则么操作呢? // 使用 call 方法 boyA.say.call(boyB) // 使用 apply 方法 boyA.say.apply(boyB); // 使用 bind 方法 注意后面的 () 号 boyA.say.bind(boyB)() // 由此表现 bind 与 apply和call 的区别 使用案例二: 区分 apply 和 call 的区别 传递参数 var boyA={ name:"张无忌", age:20, hobby:["撩妹","打太极","游山玩水"], say:function(gongfu,war){ return '我是' + this.name + ',今年'+this.age + '岁,我的拿手功夫是:'+ gongfu + ',成名战 -- '+ war } }; boyA.say('九阳神功','六大派围攻光明顶') // "我是张无忌,今年20岁,我的拿手功夫是:九阳神功,成名战 -- 六大派围攻光明顶" // 第一对象的方法中传递了两个参数 var boyB ={ name:"令狐冲", age:21, hobby:["喝酒","练剑","赌博"] } // 对象 boyB 借用对象 boyA 的方法,同时接收参数 // 使用 call 接收参数 boyA.say.call(boyB,'雨夜山神庙','独孤九剑'); // 使用 apply 接收参数 boyA.say.apply(boyB,['雨夜山神庙','独孤九剑']); // 使用数组接收参数 // 使用 bind 接收参数 boyA.say.bind(boyB)('雨夜山神庙','独孤九剑'); // 但是由于bind返回的仍然是一个函数,所以我们可以在调用的时候在进行传参
boyA.say.bind(boyB,'雨夜山神庙','独孤九剑')();
未完 -- 待续 --