JavaScriptはthisポインタを修正します.
1290 ワード
テーマ
パッケージ関数fは、fのthisを指定されたオブジェクトに向ける.
入力例
このテーマの要求は、一つの関数bindThisをカプセル化することです.この関数は二つのパラメータがあります.一つのパラメータは一つの内部にthisポインタを使用する関数fがあります.二つ目のパラメータは一つのオブジェクトobjです.bindThisを実行した後、一つの関数を返します.
javascriptの三剣士:bind apply call
1、解決方法一:bind()を使う
パッケージ関数fは、fのthisを指定されたオブジェクトに向ける.
入力例
bindThis(function(a, b) {
return this.test + a + b;
}, {test: 1})(2, 3);
出力例6
分析このテーマの要求は、一つの関数bindThisをカプセル化することです.この関数は二つのパラメータがあります.一つのパラメータは一つの内部にthisポインタを使用する関数fがあります.二つ目のパラメータは一つのオブジェクトobjです.bindThisを実行した後、一つの関数を返します.
function f(a, b) {
return this.test + a + b;
}
function bindThis(f, obj) {
//
}
//
var a = bindThis(f,{test:1});
a(2,3);
解決方法javascriptの三剣士:bind apply call
1、解決方法一:bind()を使う
function f(a, b) {
return this.test + a + b;
}
function bindThis(f, obj) {
//
return f.bind(obj);
}
//
var a = bindThis(f,{test:1});
console.log(a(2,3));
console.log(f(2,3));
6
NaN
2、解決方法2:appyを使う()function bindThis(f, obj) {
//
return function () {
return f.apply(obj, arguments);
};
}
3、解決方法3:コールを使う()function bindThis(f, obj) {
//
return function (a,b) {
return f.call(obj, a,b);
};
}
callとappyの基本的な違い:パラメータが違います.2つのパラメータをapply()で受信し、1つ目は結合thisの値で、2番目はパラメータ配列である.call()は、最初のパラメータもthisの値にバインドされていますが、後者は一定のパラメータではなく、配列ではなく、つまり、通常の関数への参照のように、これらのパラメータを一つずつ渡すことができます.