1. 程式人生 > >js 對call apply bind理解

js 對call apply bind理解

this 逗號 spa 最大 art ffffff back round blog

請參考 http://www.cnblogs.com/xljzlw/p/3775162.html
call apply
var mtt = { name: "mtt", sayHello: function (age) { console.log("hello, i am ", this.name + " " + age " years old"); } }; var xjs = { name: "xjs ",
}; mtt.sayHello(24);// hello, i am zlw 24 years old

apply參數需要是數組形式,而call參數需要用逗號隔開24,25
mtt .sayHello.call(xjs , 24);// hello, i am xjs 24 years old
mtt .sayHello.apply(xjs , [24]);// hello, i am xjs 24 years old

bind方法傳遞給調用函數的參數可以逐個列出,也可以寫在數組中。bind方法與call、apply最大的不同就是前者返回一個綁定上下文的函數
mtt .sayHello.bind(xjs)(24); //hello, i am xlj 24 years old
mtt .sayHello.bind(xjs)([24]); //hello, i am xlj 24 years old


bind
var bind = Function.prototype.call.bind(Function.prototype.bind);

var zlw = {
 name: "zlw" 
};

function hello () {
  console.log("hello, I am ", this.name);
}

bind(hello, zlw)() // hello, I am zlw

js 對call apply bind理解