JavaScript總結--建立對象

來源:互聯網
上載者:User

JavaScript總結--建立對象

在JavaScript中建立對象主要就是用以下三種語句:

var box=new Object(); 或var box=Object(); var box={};//字面量 function Box(){};//建構函式

現在,我們就牛刀小試,來建立一個對象

var man=new Object();//建立Object對象的執行個體:manman.name='Mr.Q';//man對象的name屬性man.sex=30;//man對象的nameman.work=function(){return this.name+' is working.';};alert(man instanceof Object);//true 是Object對象的執行個體alert(man.work());//Mr.Q is working.

如果要建立和以上對象類似的對象怎麼辦?

方案一:直接賦值;缺點:會覆蓋原來對象

var woman=man;woman.name='Ms.L';//man對象的name屬性woman.sex=21;//man對象的namewoman.work=function(){return this.name+' is working.';};alert(woman.name);//Ms.L 會將man對象的name屬性覆蓋掉

方案二:用相同的方式再執行個體化一個對象;缺點:會產生大量重複代碼

var woman=new Object();//建立Object對象的執行個體:manwoman.name='Ms.L';//man對象的name屬性woman.sex=21;//man對象的namewoman.work=function(){return this.name+' is working.';};alert(woman.work());//Mr.Q is working.

最佳化一:原廠模式:解決執行個體化大量類似對象產生重複代碼問題

function createobject(name,sex){var obj=new Object();obj.name=name;obj.sex=sex;obj.work=function(){return this.name+' is working';};return obj;}var man=createobject('Mr.Q',30);var woman=createobject('Ms.L',21);alert(man.work());alert(woman.work());

弊端: 因為是原廠模式嘛!批量生產,產品都一個樣。對象之間無法區分,他們全都是Object對象的執行個體。
最佳化二:建構函式解決重複執行個體化和對象識別問題

function Person(name,sex){//人類this.name=name;this.sex=sex;this.work=function(){return this.name+' is working';};}var man=new Person('Mr.Q','男');var woman=new Person('Ms.L','女');alert(man instanceof Object);alert(man instanceof Person);function ET(name,sex){//外星人this.name=name;this.sex=sex;this.work=function(){return this.name+' is working';};}var marsman=new ET('Mr.Q','男');alert(marsman instanceof ET);//truealert(marsman instanceof Person);//false mrasman是ET對象的執行個體,而不是Person對象的執行個體

總結:在這篇文章中我們簡單介紹了建立一個對象的三種方式:Object,字面量和建構函式,而當建立很多類似對象時,原廠模式是個不錯的選擇,但因為批量標準化的生產,產品缺乏個性,所以我們要用建構函式,來區分不同的對象。可是當我們通過建構函式來區分不同的對象時,依然避免不了產生重複代碼的問題,就像上面的Person和ET它們除了建構函式名稱不一樣,其他都一樣,那麼這又該如何解決呢?我想,原型和繼承的使用是少不了的,將在後續文章中介紹。

聯繫我們

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