JS定義類及對(duì)象

1、工廠方式

<script type="text/javascript"> 

function createObject(name){ 

       var p = new Object(); 

       p.name=name; 

       p.say = function(){alert(p.name+'ff');} 

       return p; 
} 

var p1 = createObject("p1"); 

var p2 = createObject("p2"); 

alert(p1.name+" "+p2.name); 

p1.say();p2.say(); 

alert(p1.say==p2.say); //false 

</script>

問題:每創(chuàng)建一個(gè)對(duì)象,對(duì)象的方法是新對(duì)象,浪費(fèi)資源

2、 構(gòu)造函數(shù)方式

<script type="text/javascript"> 

function Person(name){ 

this.name = name; 

this.say = function(){ 

alert("I am "+this.name); 

  } 
} 

var p1 = new Person("wang"); 

var p2 = new Person("li"); 

p1.say(); 

p2.say(); 

alert(p1.say==p2.say); //false 

</script>

問題:創(chuàng)建對(duì)象時(shí)比工廠方法更于理解。和工廠方法一樣,每個(gè)對(duì)象都有自己的方法,浪費(fèi)資源.

3、 原型方式

function Person(){}

Person.prototype.name="";

Person.prototype.say=function(){
    alert("I am"+this.name);
}

var p1=new Person();

var p2=new Person();

alert(p1.say==p2.say);//true

問題:無法在構(gòu)造方法中傳遞參數(shù),所有對(duì)象共享屬性。

優(yōu)點(diǎn):對(duì)象共用方法,節(jié)約資源的。

4、 構(gòu)造方法+原型方式

function Person(name){
    this.name=name;
}

Person.prototype.say=function(){
   alert("I am"+this.name);
}

var p1=new Person("wang");

var p2=new Person("li");

p1.say();

p2.say();

alert(p1.say==p2.say);//true

優(yōu)點(diǎn):解決了前面提到的問題

問題:封裝不夠完美。

5、 動(dòng)態(tài)原型方式

function Person(name){
   this.name=name;

  if(Person.prototype.say==undefined){
        Person.prototype.say=function(){
        alert("I am "+this.name);
      }
   }
}

var p1=new Person("wang");

var p2=new Person("li");

p1.say();

p2.say();

alert(p1.say==p2.say);//true

結(jié)論:一種完美的解決方案。

6、 對(duì)象的創(chuàng)建--JSON

var person={};

var girl={

     name:"miss wang",

     age:20,

     show=function(){
          alert("my name is "+this.name);
     }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 普通創(chuàng)建對(duì)象和字面量創(chuàng)建對(duì)象不足之處:雖然 Object 構(gòu)造函數(shù)或?qū)ο笞置媪慷伎梢杂脕韯?chuàng)建單個(gè)對(duì)象,但這些方式有...
    believedream閱讀 2,574評(píng)論 2 18
  • 本章內(nèi)容 理解對(duì)象屬性 理解并創(chuàng)建對(duì)象 理解繼承 面向?qū)ο笳Z言有一個(gè)標(biāo)志,那就是它們都有類的概念,而通過類可以創(chuàng)建...
    悶油瓶小張閱讀 963評(píng)論 0 1
  • 博客內(nèi)容:什么是面向?qū)ο鬄槭裁匆嫦驅(qū)ο竺嫦驅(qū)ο缶幊痰奶匦院驮瓌t理解對(duì)象屬性創(chuàng)建對(duì)象繼承 什么是面向?qū)ο?面向?qū)ο?..
    _Dot912閱讀 1,534評(píng)論 3 12
  • 初中最后一個(gè)學(xué)期,幾個(gè)班級(jí)整體調(diào)整。結(jié)果出來后,三班拆散了。我們班分到了兩個(gè)全校公認(rèn)的?;?,其中一個(gè)?;ǜ覀兯奚?..
    唐浩319閱讀 310評(píng)論 0 0
  • 上周去聽了一個(gè)分享,分享者是一個(gè)陽光漂亮的女孩。 女孩說當(dāng)時(shí)讀大學(xué)的她與父親已經(jīng)三年沒有聯(lián)系了,卻因在老師的“強(qiáng)迫...
    豪樂閱讀 296評(píng)論 0 0

友情鏈接更多精彩內(nèi)容