JavaScript call apply

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]
原文地址:https://www.cnblogs.com/kai-/p/14286770.html