《JavaScript》——物件導向與原型

來源:互聯網
上載者:User

標籤:web開發   javascript   

     談到物件導向,我們之前學過Vb和C#,從抽象到封裝再到繼承和多態,物件導向的世界真的很好玩,但是JavaScript中的物件導向有些特殊,因為裡面沒有類,而且對象的建立方式也不同。


   

    對象的建立大約有四種方式:使用new關鍵字建立、使用字面量建立、使用Factory 方法建立、使用建構函式建立。

    1、使用new關鍵字

var box = new Object(); //建立一個 Object 對象box.name = 'Lee'; //建立一個 name 屬性並賦值box.age = 100; //建立一個 age 屬性並賦值box.run = function () { //建立一個 run()方法並傳回值return this.name + this.age + '運行中...';};alert(box.run()); //輸出屬性和方法的值
   2、使用字面量建立 
var box ={name:'帥哥',age:'25',run :function(){return this.name+"的年齡是"+this.age}}alert(box.run());
  3、使用自訂函數建立(原廠模式)

function createObject(name,age){var obj=new Object();obj.name=name;obj.age=age;obj.run=function(){return this.name+this.age;};return obj;};

  4、使用建構函式建立

function Box(name,age){this.name=name;this.age=age;this.run=function(){return this.name+this.age+'看我......';};};
   4、四種方式的比較 

   四種方式建立對象各有利弊,new關鍵字與字面量方式比較起來,使用字面量方式在建立對象的時候添加屬性和方法比較簡單,方便。但是對於建立更多類似的對象的時候,上面兩種方式就變得繁瑣起來,因為對象需要一個個的建立後再添加屬性和方法太麻煩了,這時候原廠模式方法就出來了,使用原廠模式方法,解決了建立多個類似對象聲明的問題,但是它無法區分執行個體從屬於哪個對象,例子如下所示。 

var box = createObject('帥哥', 20);alert(box1 instanceof Object); //返回true,只能判斷它從屬於Object
    問題出現了,總有解決辦法吧!這時候,建構函式建立對象的方法就登台了,使用建構函式的方法,即解決了重複執行個體化的問題,又解決了對象識別的問題。代碼如下。

var box= new Box('美女', 20);alert(box instanceof Box); //返回true,很清晰的識別box從屬於 Box
   建構函式方法與原廠模式方法比較起來,建構函式方法沒有顯示的建立對象(沒有var box = new Object()),直接將屬性和方法賦值給this對象,還沒有Return語句(Return obj)。這些沒有的東東在使用建構函式建立對象的時候是後台自動啟動並執行,是不是很省勁兒?
   5、建構函式與普通函數的區別

   聲明:建構函式首字母需要大寫,主要目的是為了好區分。

   調用:使用new 關鍵字調用,var box = new Box(‘美女‘, 20);
   小結

   四種聲明建立對象的方式層層遞進,都是伴隨著問題的升級而出現的,在這裡我想到了金庸小說裡的一句話“英雄是隨著時代產生的”,映射到對象建立這個問題上來,方法是伴隨著問題產生的。

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

《JavaScript》——物件導向與原型

聯繫我們

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