在js中,這三種方法都是用來改變函式的this物件的指向的。
先看看相似點:
那區別呢?
上**:
var xb =
}var other =
xb.say(); ===> 結果 小冰,女
那麼如果我們想要用xb的say()方法輸出other的資料,要怎麼辦呢?
簡單的可以用:
1. xb.say
.call(other);
2. xb.say
3. xb.say
.bind(other)();
現在來看傳引數的情況
上**(還是上面的例子,但是傳參):
var xb =
}var other =
xb.say.call(other,'斯坦福','3')
// ====> 小東,男----斯坦福,3
// ====> 小東,男----sitanfu,third
bind()呢?
xb.say.bind(other,'斯坦福','3');
// 是不是跟call傳參很像
但是上面xb.say.bind(other,』斯坦福』,』3』),返回的其實還是乙個函式,並沒有執行
console.log(xb.say.bind(other)); // 我們可以把xb.say.bind(other);列印出來看看
// ===> 返回的是乙個函式 返回放在下一節**裡面
}
返回結果
function
(school,grade)
}
apply call bind 使用總結
參考 語法 語法 fun.call thisarg arg1 arg2 var a var b a.fn 接受的是乙個陣列var a var b a.fn 接受的是引數 b.call a,1,2 3var a var b a.fn b.bind a,1,2 以上code我們會發現並沒有輸出.bind...
apply,call,bind個人總結
首先他們是用來改變呼叫方法中this的指向的,而且他們都是function的prototype。分別為 function.prototype.call function.prototype.bind 引數1 thisarg 物件也就是需要指向this的物件 引數2 argsarray 陣列 會按對應...
手動實現apply call bind
window.a 1 定義乙個全域性變數 var obj 定義乙個物件用來繫結 var funct function b,c 定義乙個函式用來執行 funct 1,2 1 1 2 直接執行,相當於window.funct 1,2 this繫結於window base base window 傳遞繫結...