例を挙げて、参照のためにJavaScriptで通話、適用、および結合した方法を説明します。特定のコンテンツは次のとおりです
<!doctype html> <html> <head> <meta charset = "utf-8"> <title> </title> <script type = "text/javascript"> function man(name、sex、age){this.name = name; this.sex = sex; this.age = age; this.say = function(school、zhuanye){console.log(this.name + "、" + this.sex + "、今年" + this.age + "year! san "、" Male "、26); var woman = new woman(" Xiaohong "、" Female "、18); man.say( 'tsinghua University'、 'excavator'); man.say.call(woman、" lanxiang Technical School "、"電気溶接 "); man.say.apply(woman、[" new oriental "); man.say.bind(woman)( "Deyun Club"、 "Pop Music");なぜ?何を呼び、適用し、バインドしますか?なぜこれを学ぶのですか?
通常、この環境を指定するために使用され、これらの問題は通常、学習前に発生します。
var a = {user: "dream chasing"、fn:function(){console.log(this.user); }} var b = a.fn; b(); //未定義オブジェクトAのユーザーの何が問題になっていますが、未定義ですか? a.fn()を直接実行しても問題ありません。
var a = {user: "chasing dreams"、fn:function(){console.log(this.user); }} a.fn(); //夢を追いかけますここでこれを印刷できる理由は、これがここで機能Aを指しているからです。このポインティングの問題を理解する必要がある場合は、JSでのこのポインティングの完全な理解をご覧ください。この記事を覚える必要はありません。
この方法では目的を達成できますが、このオブジェクトを別の変数に保存する必要がある場合があるため、次の方法を使用できます。
1。呼び出し()
var a = {user: "catching dreams"、fn:function(){console.log(this.user); //夢をキャッチする}} var b = a.fn; b.call(a);環境にBに追加する最初のパラメーターを追加することにより、このポイントをそのオブジェクトに配置するだけです。
最初のパラメーターに加えて、コールメソッドは次のように複数のパラメーターを追加することもできます。
var a = {user: "catching dreams"、fn:function(e、ee){console.log(this.user); // Dreams Console.logをキャッチする(E+EE); // 3}} var b = a.fn; b.call(a、1,2);2。Apply()
適用方法はコールメソッドに多少似ており、これの指さしを変更することもできます
var a = {user: "catching dreams"、fn:function(){console.log(this.user); //夢を捕まえる}} var b = a.fn; b.apply(a);同様に、適用は複数のパラメーターを持つこともできますが、違いは、2番目のパラメーターが次のように配列でなければならないことです。
var a = {user: "catching dreams"、fn:function(e、ee){console.log(this.user); // Dreams Console.logをキャッチする(E+EE); // 11}} var b = a.fn; b.apply(a、[10,1]);または
var a = {user: "catching dreams"、fn:function(e、ee){console.log(this.user); // Dreams Console.logをキャッチする(E+EE); // 520}} var b = a.fn; var arr = [500,20]; b.apply(a、arr); //呼び出しと適用の最初のパラメーターがnullとして書かれている場合、これはウィンドウオブジェクトを指すことに注意してくださいvar a = {user: "dream chasing"、fn:function(){console.log(this); // window {external:object、chrome:object、document:document、a:object、speechsynthesis:}}} var b = a.fn; b.apply(null);3。bind()
BINDメソッドは、通話や適用方法とは多少異なりますが、この方向を変更するために使用できます。
最初にそれらの違いについて話しましょう。
var a = {user: "dream chasing"、fn:function(){console.log(this.user); }} var b = a.fn; b.bind(a);コードが印刷されていないことがわかりました。はい、これはバインドとコールと適用の方法の違いです。実際、BINDメソッドは変更された関数を返します。
var a = {user: "dream chasing"、fn:function(){console.log(this.user); }} var b = a.fn; var c = b.bind(a); console.log(c); // function(){[ネイティブコード]}function cを実行して、オブジェクトでユーザーを印刷できるかどうかを確認しましょう
var a = {user: "catching dreams"、fn:function(){console.log(this.user); //夢を捕まえる}} var b = a.fn; var c = b.bind(a); c();OK、Bindは複数のパラメーターを持つこともでき、実行時にパラメーターを再度追加できますが、パラメーターは正式なパラメーターの順に実行されることに注意する必要があります。
var a = {user: "catching dreams"、fn:function(e、d、f){console.log(this.user); // Dreams Console.log(e、d、f)をキャッチします。 // 10 1 2}} var b = a.fn; var c = b.bind(a、10); c(1,2);概要:コンテキストでこれを変更して適用し、この関数をすぐに実行します。 BINDメソッドにより、対応する関数が必要に応じて呼び出され、実行されたときにパラメーターを追加できます。これは彼らの違いであり、あなたの実際の状況に応じてそれを使用することを選択します。
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。