call()bind()apply()は見れば分かります.
2409 ワード
愚かに見えますが、実は簡単なのは無駄話より少なく直接コードを言います.
コードセグメント1:最初の を指す.の第二の です.
主役を引っ張るべきだ
call()appy()bind()まず注意してください.この三つのアプリは全部「 です.
前のコードですか?ここにきて、この三つの機能はビッドに括弧を付けた以外に、他はすべて同じようにthisの方向を変えたので、thisを新たなオブジェクト に向けた.これでコードを観察して結論を出すことができます. call()appy()は全部使用後、方法は直接 を実行します. bit()は、手動で起動して を実行する必要がある方法を返します.
=======華やかな線引き
call,appy,bingパラメータについて
元のコードを少し修正します.funメソッドにパラメータを持たせます.パラメータ: 最初のパラメータ:thisオブジェクト の2番目のパラメータ:callとbindは、メソッドパラメータを直接に入れ、コンマで区切られています.applyだけが、方法のパラメータを行列に入れなければなりません. .
最後のまとめ:
1、call、appy、bindはいずれもthisの指向を変える2、callであり、applyは直接的な呼び出し方法である3、bindはthisの指向を変えた後に戻る方法であり、手動で4、方法を呼び出して参照する必要があります.call、bindは直接パラメータを書き込み、中間はカンマで区切ってもいいです.
WeChatを入れて一緒に勉強してください.13671593005です.
コードセグメント1:
var name = ' ', age = 13;
var obj = {
name: ' ',
objAge: this.age,
fun: function () {
console.log('name:', this.name + ',Age:' + this.age);
}
}
obj.fun() // name: ,Age:undefined
コードセグメント2:var name = ' '
function show () {
console.log(this.name);
}
// show() //
二つのコードの違いを説明してください.this
は、方法の使用者、すなわち、Objというオブジェクトthis
は、あなたの関数が大域的な声明であるため、関数を実行する場合はthis window
主役を引っ張るべきだ
call()appy()bind()
this
」のキーワードである
前のコードですか?
var name = ' ', age = 13;
var obj = {
name: ' ',
objAge: this.age,
fun: function () {
console.log('name:', this.name + ',Age:' + this.age);
}
}
オブジェクトを追加var cxk = {
name: ' ',
age: 18
}
結果:obj.fun.call(cxk) // name: ,Age:18
obj.fun.apply(cxk) // name: ,Age:18
obj.fun.bind(cxk)() // name: ,Age:18
=======華やかな線引き
call,appy,bingパラメータについて
元のコードを少し修正します.funメソッドにパラメータを持たせます.
var name = 'itcast', age = 13;
var obj = {
name: ' ',
objAge: this.age,
fun: function (from, to) { //
console.log('name:', this.name + ',Age:' + this.age, ' :', from, ' :', to, ' ');
}
}
var cxk = {
name: ' ',
age: 18
}
obj.fun.call(cxk, ' ', ' ') // ,Age:18 : :
obj.fun.apply(cxk, [' ', ' ']) // ,Age:18 : :
obj.fun.bind(cxk, ' ', ' ')() // ,Age:18 : :
この時の観察コード:最後のまとめ:
1、call、appy、bindはいずれもthisの指向を変える2、callであり、applyは直接的な呼び出し方法である3、bindはthisの指向を変えた後に戻る方法であり、手動で4、方法を呼び出して参照する必要があります.call、bindは直接パラメータを書き込み、中間はカンマで区切ってもいいです.
WeChatを入れて一緒に勉強してください.13671593005です.