js関数呼び出し常用方法詳細

2353 ワード

ソースはjavascript言語の精粋です.これは本のソースコードではありません.
jsの関数は2つのパラメータを無料で送ることができます.つまり、thisとargmentsです.argmentsはパラメータ群であり,彼は真の配列ではないが,length法を用いて長さを得ることができる.
本には4中呼び出し方式というものがあります.
メソッドコールモード
関数コールモード
コンストラクタ呼び出しモード
アプリ呼び出しモード
いくつかの実例を見てみます.よりよく分かります.
1:メソッドコールモード
thisはこの時mybjectを指します.
 
  
/* */
var myobject={
value:0,
inc:function(){
alert(this.value)
}
}
myobject.inc()
2:関数コールモード
thisはこの時windowを指します.
 
  
/* */
var add=function(a,b){
alert(this)//this window
return a+b;
}
var sum=add(3,4);
alert(sum)
3:コンストラクタ呼び出しモード
javascript言語の精粋書はこの中の方式を捨てることを提案します.もっといい方法があるからです.ここはまず紹介しません.次のブログを発表する時に貼ってください.
ここに接続を追加します.
 
  
/* */
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*/
// sum
// myobject
// this 。
//apply this
var arr=[10,20];
var sum=add.apply(myobject,arr);
alert(sum);
このアプリを見てください.これは結合時間の関数です.
 
  
var bind=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)];//----
// IE attachEvent 。
//this object 。 function this.id 。
// fn.apply(object)
// apply this 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)});