成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

JS對(duì)象編程的原型和構(gòu)造函數(shù)混合使用

Null / 1318人閱讀

摘要:概括創(chuàng)建自定義類(lèi)型的最常見(jiàn)方式,就是組合使用構(gòu)造函數(shù)模式與原型模式。應(yīng)用方式一分開(kāi)定義,用來(lái)理解構(gòu)造函數(shù)與原型方式二動(dòng)態(tài)原型模式定義,避免獨(dú)立的構(gòu)造函數(shù)和原型,更完美的定義形式。

概括:創(chuàng)建自定義類(lèi)型的最常見(jiàn)方式,就是組合使用構(gòu)造函數(shù)模式與原型模式。

好處:通過(guò)這種方式,不僅每個(gè)實(shí)例都有自己的一份實(shí)例屬性的副本,而且同時(shí)又共享著對(duì)方法的引用,最大限度的節(jié)省了內(nèi)存。而且這種混合模式還支持向構(gòu)造函數(shù)傳遞參數(shù),可謂是集兩種模式之長(zhǎng)。

定義形式:有兩種定義方式,方式-:分開(kāi)定義(這樣更好理解構(gòu)造函數(shù)和原型),方式二:動(dòng)態(tài)定義(把所有信息都封裝在了構(gòu)造函數(shù)中,通過(guò)在構(gòu)造函數(shù)中初始化原型,又保持了同時(shí)使用構(gòu)造函數(shù)和原型的有點(diǎn),換句話說(shuō),可以通過(guò)檢查某個(gè)應(yīng)該存在的方法是否有效,來(lái)決定是否需要初始化原型)。

應(yīng)用:

  

方式一:分開(kāi)定義,用來(lái)理解構(gòu)造函數(shù)與原型

function Person(name,age,job){
      this.name=name;    
      this.age=age;       
      this.job=job;       
      this.friends=["Sandy","Court"]; 
 }

Person.prototype={
      constructor:Person,     
      sayName:function(){
         alert(this.name);    
      }
 }
  

方式二:動(dòng)態(tài)原型模式定義,避免獨(dú)立的構(gòu)造函數(shù)和原型,更完美的定義形式。

function Person(name,age,job){
      this.name=name;
      this.age=age;
      this.job=job;
      this.friends=["xiaohonghua","xiaohuanghua"];

      if(typeof this.sayName!="function"){

          Person.prototype.sayName=function(){
             alert(this.name);
          };
      }

}

這里的sayName()方法不存在的情況下,才會(huì)將它添加到原型中。這段代碼只會(huì)在初次調(diào)用構(gòu)造函數(shù)時(shí)才會(huì)執(zhí)行,此后,原型已經(jīng)完成初始化,不需要在做什么修改了。不過(guò)如果修改,會(huì)立即在所有實(shí)例中得到反映。

  

調(diào)用:
因?yàn)閟ayName()方法是原型方法,所以是Person實(shí)例的所有共享方法,而構(gòu)造函數(shù)中定義的各種屬性是各個(gè)實(shí)例的屬性,隨意更改,不影響其他實(shí)例。

function test(){
     var person1=new Person1("xiaohong",26,"Teacher");
     var person2=new Person1("xiaoming",27,"Soft Engineer");

     person1.friends.push("Van");
     alert(person1.friends);  //xiaohonghua,xiaohuanghua,Van
     alert(person2.friends);  //xiaohonghua,xiaohuanghua
     alert(person1.friends == person2.friends);  //false
     alert(person2.sayName == person2.sayName);  //true
     person1.sayName();       //xiaohong
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/85722.html

相關(guān)文章

  • JavaScript面向對(duì)象程序設(shè)計(jì)

    摘要:目錄導(dǎo)語(yǔ)理解對(duì)象和面向?qū)ο蟮某绦蛟O(shè)計(jì)創(chuàng)建對(duì)象的方式的繼承機(jī)制原型對(duì)象原型鏈與原型對(duì)象相關(guān)的方法小結(jié)導(dǎo)語(yǔ)前面的系列文章,基本把的核心知識(shí)點(diǎn)的基本語(yǔ)法標(biāo)準(zhǔn)庫(kù)等章節(jié)講解完本章開(kāi)始進(jìn)入核心知識(shí)點(diǎn)的高級(jí)部分面向?qū)ο蟮某绦蛟O(shè)計(jì),這一部分的內(nèi)容將會(huì)對(duì)對(duì)象 目錄 導(dǎo)語(yǔ) 1.理解對(duì)象和面向?qū)ο蟮某绦蛟O(shè)計(jì) 2.創(chuàng)建對(duì)象的方式 3.JavaScript的繼承機(jī)制 3.1 原型對(duì)象 3.2 原型鏈 3.3 與...

    gitmilk 評(píng)論0 收藏0
  • JavaScript面向對(duì)象編程

    摘要:基本概念面向?qū)ο缶幊淌怯贸橄蠓绞絼?chuàng)建基于現(xiàn)實(shí)世界模型的一種編程模式。使用面向?qū)ο缶幊淌菫榱舜龠M(jìn)更好的靈活性和可維護(hù)性。面向?qū)ο笈c面向過(guò)程比較,面向過(guò)程更注重過(guò)程。 1:基本概念 面向?qū)ο缶幊淌怯贸橄蠓绞絼?chuàng)建基于現(xiàn)實(shí)世界模型的一種編程模式。 這句話的意思是:每個(gè)對(duì)象能夠接受信息,處理數(shù)據(jù)和發(fā)送消息給其他對(duì)象;這就意味著在這個(gè)編程模式下,每一個(gè)對(duì)象都是一個(gè)獨(dú)立的個(gè)體,它可以接收,可以處理,...

    Carbs 評(píng)論0 收藏0
  • Javascript面向對(duì)象編程 -- 設(shè)計(jì)模式

    摘要:組合構(gòu)造函數(shù)原型模式解決構(gòu)造傳參和共享問(wèn)題,可以組合構(gòu)造函數(shù)原型模式不共享的使用構(gòu)造函數(shù)共享的使用原型模式強(qiáng)制指向這種模式也是最常見(jiàn)也是最常用的模式,這種混合模式很好的解決了傳參和引用共享的大難題。 寫(xiě)在前面: 之前的文章都是寫(xiě)構(gòu)造函數(shù),原型之類(lèi)的。但是我們都知道原型最大的優(yōu)點(diǎn)也是缺點(diǎn)就是共享。也是我們最頭疼的問(wèn)題.據(jù)共享的緣故,導(dǎo)致很多開(kāi)發(fā)者放棄使用原型,因?yàn)槊看螌?shí)例化出的數(shù)據(jù)需要保...

    Cciradih 評(píng)論0 收藏0
  • 淺談JavaScript面向對(duì)象

    摘要:不必在構(gòu)造函數(shù)中定義對(duì)象實(shí)例的信息。其次,按照一切事物皆對(duì)象的這餓極本的面向?qū)ο蟮姆▌t來(lái)說(shuō),類(lèi)本身并不是一個(gè)對(duì)象,然而原型方式的構(gòu)造函數(shù)和原型本身也是個(gè)對(duì)象。第二個(gè)問(wèn)題就是在創(chuàng)建子類(lèi)型的實(shí)例時(shí),不能向超類(lèi)型的構(gòu)造函數(shù)中傳遞參數(shù)。 前言 對(duì)象(Object)應(yīng)該算是js中最為重要的部分,也是js中非常難懂晦澀的一部分。更是面試以及框架設(shè)計(jì)中各出沒(méi)。寫(xiě)這篇文章,主要參考與JavaScrip...

    cyixlq 評(píng)論0 收藏0
  • JavaScript面向對(duì)象核心知識(shí)歸納

    摘要:一面向?qū)ο蟾拍蠲嫦驅(qū)ο缶褪鞘褂脤?duì)象。因此在構(gòu)造函數(shù)中表示剛剛創(chuàng)建出來(lái)的對(duì)象。在構(gòu)造函數(shù)中利用對(duì)象的動(dòng)態(tài)特性為其對(duì)象添加成員。 一、面向?qū)ο?1.1 概念 面向?qū)ο缶褪鞘褂脤?duì)象。面向?qū)ο箝_(kāi)發(fā)就是使用對(duì)象開(kāi)發(fā)。 面向過(guò)程就是用過(guò)程的方式進(jìn)行開(kāi)發(fā)。面向?qū)ο笫菍?duì)面向過(guò)程的封裝。 1.2 三大特性 抽象性所謂的抽象性就是:如果需要一個(gè)對(duì)象描述數(shù)據(jù),需要抽取這個(gè)對(duì)象的核心數(shù)據(jù) 提出需要的核心...

    TalkingData 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<