關於 js 中的 call 和 apply使用理解

來源:互聯網
上載者:User

標籤:style   blog   color   io   os   使用   ar   strong   sp   

  在學習新的東西時候,碰到以前看過而又不理解,或則記憶不深的地方不妨回頭看看書裡知識點,有助於加深理解。正所謂--溫故而知新。

  廢話不多說,直接上代碼:

  第一節:一個簡單的例子
     function add(a,b){         console.log(a+b);     }     function sub(a,b){         console.log(a-b);     }     add.call(sub,3,2); //5

  總結:以上代碼 定義兩個方法,而最後一句話,不妨理解為 sub對象 調用了 add對象 的方法,並把參數也帶入方法裡。

 

 第二節:深入理解 call 和 apply

  call 和 apply的定義說明:call和apply 是函數的非繼承方法,在某個特定作用範圍內調用某個函數,設定函數體內this對象的值,

     function NJie(){         this.name = "Njie",         this.sayName = function(){             console.log(this.name);         }     }     function KK(){         this.name ="KK";     }     var n = new NJie();     var k = new KK();     n.sayName(); //NJie     n.sayName.call(k); //KK

  總結:比如說:k 對象沒有 sayName 的函數,而 n 有這個函數,那 k 就通過call 來借 n的 sayName使用,當然也要把在 k 中的值帶入到方法裡。

第三節:call 和 apply 的 區別

  說明:call 和 apply 的區別,在於兩個傳入的參數的方式不一樣

  

    // 父類     function Person(name,age){         this.name = name;         this.age = age;     }     //子類 學生     function Student(name,age,grade){         Person.apply(this,arguments);  //子類繼承了父類         // Person.call(this,name,age);  //當然,也可以使用 call的方法         this.grade = grade;     }     //建立一個學生的執行個體     var s1 = new Student("倪傑","23","北京大學成人班,一年級");     console.log("您好,",s1.name,"您今年",s1.age,"歲,就讀於",s1.grade,",實在太棒了");

  總結:

    以上的例子有兩個要點:

      1,是可以使用 call的方法來做 js 的繼承處理;

      2,call 和 apply 的區別主要是在於後面的傳入參數方式不同,call傳參數要把參數一一列出來,而apply則可以使用 arguments 這個屬性直接帶過去.

 

  

關於 js 中的 call 和 apply使用理解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.