ホームページ  >  記事  >  ウェブフロントエンド  >  jsのcall()、apply()、bind()の使い方を詳しく解説

jsのcall()、apply()、bind()の使い方を詳しく解説

php是最好的语言
php是最好的语言オリジナル
2018-08-10 17:50:082687ブラウズ

JavaScript の call()、apply()、bind() の使い方をついに理解しました

それは実際には非常に単純なことですが、10 分間注意深く読んだ後、私は混乱していましたが、完全に理解することができました。 /blind Monk

2 つの違いを比較してください。最初のものは、obj を指す this を出力します。2 番目のグローバルに宣言された shows() 関数は、window;

1、call()、apply() です。 、bind() は、このオブジェクトを再定義するために使用されます。

例: jsのcall()、apply()、bind()の使い方を詳しく解説

obj.myFun.call(db); //デマの年齢は99歳

obj.myFun.apply(db); //デマの年齢は99歳
jsのcall()、apply()、bind()の使い方を詳しく解説obj.myFun.bind( db )(); //デマの年齢は 99 歳です

上記のバインド メソッドの後に追加の () が付いていることを除いて、返される結果は同じです。

bind は新しい関数を返し、実行するには呼び出す必要があると結論付けることができます

2. パラメーターを渡すときに呼び出し、bind、適用を比較してください

obj.myFun.call(db ,'Chengdu', '上海'); //デマの99歳は成都から上海へjsのcall()、apply()、bind()の使い方を詳しく解説

obj.myFun.apply(db,['成都','上海']) //デマの99歳は成都から上海へ行きます

obj .myFun.bind(db,'成都','上海')(); //デマの年齢は99歳、成都から上海まで

obj.myFun.bind(db,['成都', '上海'])() ; //デマの年齢は 99 歳です。彼女は成都から来て、定義されていないまま上海に行きます

微妙な違いです!

上記の 4 つの結果から見るのは難しくありません
call、bind、apply の 3 つの関数の最初のパラメーターはすべて、this が指すオブジェクトです。違いは 2 番目のパラメーターにあります。

call のパラメーターが置かれます。 2 番目、3 番目、n 番目のパラメータはすべてカンマで区切られ、最後に直接配置されます。 obj.myFun.call(db,'Chengdu', ...,'string'); apply のパラメータはすべて配置する必要があります。配列に入れてobj.myFun.apply(db,['Chengdu', …, 'string' ]);

bindが関数を返す点を除けば、そのパラメータはcallと同じです。

もちろん、3つのパラメータは文字列型に限らず、関数やオブジェクトなど様々な型を許容します! jsのcall()、apply()、bind()の使い方を詳しく解説

関連する推奨事項:

JavaScript でのbind、call、および apply 関数の使用方法の詳細な紹介

JavaScript の call、apply、および binding メソッド間のソースと連絡先の違いの詳細な例


以上がjsのcall()、apply()、bind()の使い方を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。