javascript call 函數詳解,javascript函數詳解

來源:互聯網
上載者:User

javascript call 函數詳解,javascript函數詳解

  call 主要應用於function 對象,要求javascript  必須是5.5 以上的。

  作用是:調用一個對象的一個方法,以另一個對象替換當前對象。

 call([thisObj[,arg1[, arg2[, [,.argN]]]]])

  參數 

  thisObj 

 可選項。將被用作當前對象的對象。 

arg1, arg2, , argN 

可選項。將被傳遞方法參數序列。 

說明 

call 方法可以用來代替另一個對象調用一個方法。call 方法可將一個函數的物件內容從初始的上下文改變為由 thisObj 指定的新對象。 

如果沒有提供 thisObj 參數,那麼 Global 對象被用作 thisObj。 

obj1.method1.call(obj2,argument1,argument2) 

如上,call的作用就是把obj1的方法放到obj2上使用,後面的argument1..這些做為參數傳入. 

下面我們舉幾個例子介紹以下:

  function a(x,y){alert(x+y);  }  function b(x,y){   alert(x*y);  }  a.call(b,3,4)

如上:這個例子就是a 代替 b ,a.call(b,3,4)==a(3,4);  //注意js 中函數是對象,函數名是對象的引用。

再看一個例子:所

  function class1(){ this.name="class1"; this.showNam=function(){ alert(this.name); }  }  function class2(){ this.name="class2";  }  var c1=new class1();  var c2=new class2();  c1.showNam.call(c2);

 上面的意思是把c1的方法放到c2 執行,原本c2 沒有showNam方法,通過call 那麼c2 也就有了call 的方法。所以結果是alert(class2);

 call 實現繼承,例子如下:

 

  function class1(){this.showTxt=function(txt){ alert(txt);}  }    function class2(){  class1.call(this);  }  var c2=new class2();  c2.showTxt("cc");

 這樣 class2 就繼承了class1,class1.call(this),就是把class1 對象代替 this 對象,那麼 class2 不就有 c1所有屬性和方法嗎?c2 對象就能夠直接調用Class1 的方法以及屬性了,執行結果就是:alert(“cc”); 

 其實call 還可以實現多重繼承:

 

  function class10(){this.showsub=function(a,b){ alert(a-b); }  }  function class11(){this.showadd=function(a,b){     alert(a+b);}  }   function class2(){ class10.call(this); class11.call(this); }  var a=new class2(); a.showsub(3,4); a.showadd(4,5);

這樣就實現了雙重繼承。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.