鍍金池/ 問答/HTML/ js prototype

js prototype

function People(name){
             this.name=name;
          //對(duì)象方法
          this.Introduce=function(){
            console.log("My name is "+this.name);
          }    
         }
          //類方法
        People.Run=function(){
         console.log("I can run");
        }
        //原型方法
        People.prototype.IntroduceChinese=function(){
          console.log("我的名字是"+this.name);
        }
        //測(cè)試
        var p1=new People("大寶");
        p1.Introduce();
        People.Run();
        p1.IntroduceChinese();

最近正在學(xué)習(xí)js的原型,在網(wǎng)上搜索的例子,請(qǐng)問下對(duì)象方法與類方法以及原型方法的區(qū)別是什么呢?在實(shí)際應(yīng)用過程中應(yīng)該怎么選擇呢?

回答
編輯回答
下墜

你好,首先你得理解new到底做了什么事情
深入淺出面向?qū)ο蠛驮汀痉馄匦抡J(rèn)識(shí)new】

讀完這篇文章,你應(yīng)該可以明白
對(duì)象方法是綁定在構(gòu)造函數(shù)People的實(shí)例上的【構(gòu)造函數(shù)你可以理解為 類】
類方法是綁定在構(gòu)造函數(shù)People自己身上的【沒什么用】
原型方法是綁定在構(gòu)造函數(shù)People的prototype屬性上的的,目的是為了構(gòu)造函數(shù)People的實(shí)例能夠通過自身的__proto__屬性調(diào)用到構(gòu)造函數(shù)People的原型方法

如果你對(duì)類/實(shí)例概念不是很透徹,建議你讀下我寫的這篇文章
深入淺出面向?qū)ο蠛驮汀靖拍钇?】

題外話

我私自猜測(cè)你對(duì)于在實(shí)際應(yīng)用過程中應(yīng)該怎么選擇呢?這個(gè)問題是因?yàn)槟氵€沒有了解過面向?qū)ο缶幊?/p>

這個(gè)命題太過于龐大,如果你有空的話,可以讀一下我寫過的博客,希望對(duì)你有幫助

深入淺出面向?qū)ο蠛驮汀靖拍钇?】
深入淺出面向?qū)ο蠛驮汀靖拍钇?】—— 原型鏈和繼承

2017年8月28日 23:56
編輯回答
赱丅呿

對(duì)象方法僅為當(dāng)前對(duì)象擁有,修改它不會(huì)影響到同一個(gè)類的其他對(duì)象。

原型方法相對(duì)于是同一個(gè)類的所有對(duì)象所共有,修改之后會(huì)影響到該類的所有對(duì)象。

類方法則是該類的靜態(tài)方法,只能通過類名.方法名()這樣的方式調(diào)用,而不能通過對(duì)象.方法名()的形式調(diào)用。并且類方法調(diào)用時(shí)的this與對(duì)象方法也不一樣。前者的this是類的構(gòu)造函數(shù),后者的this則是該類的當(dāng)前對(duì)象。

2018年5月13日 04:26