亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

林甸县| 邹平县| 洛浦县| 大厂| 开远市| 麻栗坡县| 嵊州市| 准格尔旗| 嘉义县| 桐庐县| 镇原县| 灯塔市| 青川县| 腾冲县| 峨边| 林口县| 广水市| 鸡泽县| 乌海市| 勃利县| 嵊泗县| 句容市| 醴陵市| 金门县| 弋阳县| 晋江市| 商都县| 渭南市| 宁明县| 明水县| 吉林省| 吉隆县| 金寨县| 行唐县| 卫辉市| 容城县| 望城县| 读书| 顺昌县| 察隅县| 密山市|