call()、apply()、bind() 都是用来重定义 this 这个对象的
bind 返回的是一个新的函数,必须调用它才会被执行
var name = 'rannie', age = 17;
var obj={
name: 'coolin',
objage: this.age,
muFun: function(){
console.log(this.name + '年轮' + this.age);
}
}
var db = {
name: '哈哈',
age: 30
}
obj.myFun.call(db); // 哈哈年轮30
obj.myFun.apply(db); // 哈哈年轮30
obj.myFun.bind(db)(); // 哈哈年轮30
传参的情况下,
obj.myFun.call(db,'成都','上海'); // 单个
obj.myFun.apply(db,['成都','上海']); // 数组
数组直接追加
var array1 = [12 , "foo" , {name:"rannie"} , 2222];
var array2 = ["Rannie" , 666 , 100];
Array.prototype.push.apply(array1, array2);
// array1 值为 [12 , "foo" , {name:"rannie"} , 2222 , "Rannie" , 666 , 100]