ホームページ  >  記事  >  ウェブフロントエンド  >  jsの関数呼び出しの一般的なメソッドを詳しく解説_基礎知識

jsの関数呼び出しの一般的なメソッドを詳しく解説_基礎知識

WBOY
WBOYオリジナル
2016-05-16 17:47:391116ブラウズ

出典: JavaScript 言語の本質。これは本のソースコードではありません。
js の関数呼び出しでは、this と argument という 2 つの追加パラメータが無料で提供されます。 argument はパラメータ グループであり、実際の配列ではありませんが、.length メソッドを使用して長さを取得できます。
本には 4 つの呼び出しモードがあると記載されています:
メソッド呼び出しモード
関数呼び出しモード
コンストラクター呼び出しモード
適用呼び出しモード

いくつかの例を詳しく見てみましょう理解した。
1: メソッド呼び出しモード
この時点では myobject を指していることに注意してください。

コードをコピー コードは次のとおりです:

/*メソッド呼び出しモード*/
var myobject ={
value:0,
inc:function(){
alert(this.value)
}
}
myobject.inc()

2: 関数呼び出しモード
この時点では window を指していることに注意してください。
コードをコピー コードは次のとおりです:

/*関数呼び出しモード*/
var add =function(a,b){
alert(this)//this はウィンドウに関連付けられています
return a b;
var sum=add(3,4); >alert (sum)


3: コンストラクター呼び出しパターン
書籍『Essence of JavaScript Language』では、このメソッドを放棄することを推奨しています。もっと良い方法があるからです。ここでは紹介していません。次回のブログ時に載せます。 ここにリンクが追加されます。


/*コンストラクター呼び出しモードは放棄されました*/
var quo=function(string){
this.status=string;
}
quo.prototype.get_status=function(){
return this.status; >var qq=new quo("aaa");
alert(qq.get_status());



4: 通話モードを適用します
== apply のさらに役立つ例を参照してください。下部のコードを見てください。


コードをコピー
コードは次のとおりです: /*apply*/ / /使用方法に注意してください。上記の sum 関数
//および myobject
//この呼び出しメソッドの利点は、this が指すオブジェクトを指すことができることです。
// apply の最初のパラメーターは、このポインターが指すオブジェクトです。
var arr=[10,20];
var sum=add.apply(myobject,arr);
alert( sum) );


この適用の実際のアプリケーションを参照してください。 binding 時間をバインドする関数です。



コードをコピー
コードは次のとおりです。 var binding=function(object,type, fn){ if(object.attachEvent){//IE ブラウザ
object.attachEvent("on" type,(function(){
return function(event){
window.event. cancelBubble= true;//時間バブリングを停止します
object.attachEvent=[fn.apply(object)];//----ここで話したいことはここです
//attachEvent を使用して、 IE でのバインド後の時間。
//これはオブジェクト自体を指していないため、バインドした関数内の this.id は正しく動作しません。
//ただし、fn.apply(object) を使用すると。 .
//ここで、このポイントである apply の最初のオブジェクトを object に変更したことがわかります。そのため、this.id は
//object.id になり、正常に動作します。 }
})(object),false);
}else if(object.addEventListener){//その他のブラウザ
object.addEventListener(type,function(event){
event.stopPropagation( );//時間バブリングを停止します
fn.apply(this)
});
}
}
bind(document.getElementById("aaa"),"click" ,function( ){alert(this.id)});

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