Function.prototype.apply()とFunction.prototype.call()のまとめ_基礎知識

WBOY
リリース: 2016-05-16 15:03:31
オリジナル
1660 人が閲覧しました

私はいつもこの 2 つの使い方を忘れてしまい、記録のために書き留めます。
それらの関数はまったく同じですが、渡されるパラメーターが異なります

適用

apply は 2 つのパラメーターを受け入れます。最初のパラメーターは、関数本体内のこのオブジェクトのポインターを指定します。2 番目のパラメーターは、このコレクション内の要素をパラメーターとしてオブジェクトに渡します。呼び出し先:

var func = function(a, c, c){
  alert([a,b,c]); //[1,2,3]
}
func.apply(null, [1,2,3]);

ログイン後にコピー

電話

呼び出しで渡されるパラメータは固定されていません。apply と同様に、最初のパラメータも関数本体の this ポインタを表し、2 番目のパラメータから順に関数に渡されます。

var func = function(a, b, c){
  alert([a,b,c]); //[1,2,3]
}
func.call(null, 1,2,3);
ログイン後にコピー
call は、apply の糖衣構文です。最初のパラメーターが null の場合、関数本体の this はホスト オブジェクト (ブラウザーのウィンドウ) を指します。

お電話・お申込みの目的

1. これを を指すように変更します。

それが上の例です

2.Function.prototype.bind

Function.prototype.bind をモック

Function.prototype.bind = function(context){
  var self = this;
  return function(){
    return self.apply(context, arguments);
  }
};

var obj = {
  name: 'cxs'
};

var func = function(){
  alert(this.name); //cxs
}.bind(obj);

fun();
ログイン後にコピー

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート