call(obj)
這個(gè)方法的作用是將函數(shù)代碼塊中的this指向替換成obj
例如
var obj = {};
function Person(){
console.log(this);
}
Person.call(obj);
結(jié)果是 打印obj對(duì)象
大概原理 :
在調(diào)用call方法的時(shí)候:
var code = this.tostring.replace('this','obj');
eval(code);
this();
// 第一行代碼的this代表的是調(diào)用這個(gè)方法的函數(shù) tostring將袋鼠代碼快變?yōu)樽址?再進(jìn)行替換 eval的作用是將字符串等作為js表達(dá)式來(lái)執(zhí)行返回一個(gè)object 第三行此時(shí)的this中的this已經(jīng)被改變 執(zhí)行原來(lái)的函數(shù)