Js語言中Call方法和Apply方法

來源:互聯網
上載者:User

標籤:

 1     <script type="text/javascript"> 2         // Call方法: 3         // 文法:call(thisObj[,arg1,arg2,...,argN]) 4         // 定義:調用對象的一個方法,用另一個對象替換當前對象 5  6         // Apply方法: 7         // 文法:apply([thisObj,argArray]) 8         // 定義:應用某一個對象的一個方法,用另一個對象替換當前對象 9 10         //a,11         function add (a,b) {12             alert(a+b);13         }14         function sub(a,b){15             alert(a-b);16         }17         add.call(sub,3,1);18         用add來替換sub,add.call(sub,3,1)==add(3,1),結果是alert(4);19         //b,20         function Animal(){21             this.name="Animal";22             this.showName=function(){23                 alert(this.name);24             }25         }26         function Cat(){27             this.name="Cat";28         }29         var animal=new Animal();30         var cat=new Cat();31 32         animal.showName.call(cat);33         // 通過call或者apply方法,將原本屬於Animal對象的showName()方法交給對象cat來使用。結果為alert("Cat");34         //c,可以實現繼承。35         function Animal(name){36             this.name=name;37             this.showName=function(){38                 alert(this.name);39             }40         }41         function Cat(name){42             Animal.call(this,name);43         }44         var cat=new Cat("Black Cat");45         cat.showName();46         //Animal.call(this)的意思是使用Animal對象代替this對象,那麼Cat中就有了Animal的所有方法和屬性了,Cat對象就能直接調用Animal的方法和屬性了。47         //d,多重繼承48         function Class10(){49             this.showSub=function(a,b){50                 alert(a-b);51             }52         }53         function Class11(){54             this.showAdd=function(a,b){55                 alert(a+b);56             }57         }58         function Class2(){59             Class10.call(this);60             Class11.call(this);61         }62         //使用兩個call就實現多繼承了。63 64         call和apply的區別在於call的第二個參數可以是任意類型,而apply的第二個參數必須是數組或者arguments65     </script>

 

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.