91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Call和apply怎么用

發布時間:2021-11-23 09:35:00 來源:億速云 閱讀:134 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關Call和apply怎么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

     . 每一個函數都包含兩個非繼承而來的函數: call,apply.  在特定的作用域中調用函數,  實際上相當于   函數體內this對象的值

     .call,apply  用途之一就是傳遞參數.    實際上強大的地方是  :   擴大函數的作用域   

eg1:   ( 傳遞參數 )

     //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

          function sum(x,y){

               return x+y;

          }

          function call1(n1,n2){

               return sum . call ( this,n1,n2 );          //~~~  return sum.apply(this , [ n1, n2 ] );

          }

          alert(call1(10,20));      //alert(30);

     //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

eg2:  (擴充作用域)    好處:  對象和方法 沒有 耦合關系 

  //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  window.color =  ' red ';

  var obj  =  { color : ' blue'};

   function showColor()  {

          alert( this.color );

   }

   showColor.call( window );    // showColor.call(this);   // red

   showColor.call( obj );  //blue

  //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

     //自定義對象

     function Obj ( x , y){

          this.x = x;

          this.y = y;

           return x*y ;

     }

     // 方法 

     function  fun( a , b ){

          return a + b;

     }

     var obj = new Obj (10 , 20);

     alert( fun . call ( obj , obj.x , obj.y );    // 30 

 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

舉幾個具體例子:

例子1:

function add(a,b) 

    alert(a+b); 

function sub(a,b) 

    alert(a-b); 

//add.call(sub,3,1);

add.apply(sub,[3,1]);   

例子2:

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);   //class2

c1.showNam.apply(c2);

例子3:

   var func=new function(){this.a="func"};

//    var func = { a:"func"};

    var myfunc=function(x){

        var a="myfunc";

        alert(this.a);

        alert(x);

    };

   // myfunc.apply(func,"var");

    myfunc.apply(func,["var"]);  

例子4:[吊炸天有木有~call 可以用來實現繼承]

function Class1() 

    this.showTxt = function(txt) 
    { 
        alert(txt); 
    } 

function Class2() 

    Class1.call(this); 

var c2 = new Class2(); 
c2.showTxt("cc"); 

例子5:多繼承[javaScript 如何來模擬面向對象的繼承,還可以實現多重繼承]

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 c2 = new Class2();

c2.showAdd(1,4);  //5

c2.showSub(10,6);//4

關于“Call和apply怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安远县| 明光市| 萨迦县| 班戈县| 桃江县| 手游| 美姑县| 安顺市| 陆丰市| 栖霞市| 舒兰市| 台江县| 新郑市| 昌平区| 神农架林区| 天镇县| 遂溪县| 读书| 宝丰县| 托克逊县| 建湖县| 马尔康县| 交城县| 华安县| 茌平县| 贵州省| 元朗区| 杭锦后旗| 鄱阳县| 潜山县| 黎川县| 嘉善县| 德化县| 调兵山市| 彰武县| 河北区| 东乡族自治县| 和林格尔县| 阿拉善盟| 奎屯市| 大余县|