JavaScript學習2:物件導向

來源:互聯網
上載者:User

標籤:javascript   物件導向   對象   

        很多人都知道,面向過程和物件導向的軟體開發思想,同樣我們的JavaScript也具有這兩種開發模式。今天我們來看看JavaScript中的物件導向的東西。

        物件導向的語言有一個非常重要的特性,那就是類的概念,通過類我們可以建立任意多個具有相同屬性和方法的對象,而JavaScript卻沒有類的概念,但是它有對象,只是此對象非彼對象。

        建立對象    

<span style="font-size:18px;">//建立對象var person =new Object();person.name='lian';person.age=18;person.run=function(){return this.name+this.age +'奮鬥中……';};</span>

        這樣我們就建立了一個對象,並且為對象建立了屬性和方法,在run()方法裡的this,就代表person對象本身。這種方法是JavaScript建立對象的最基本的方法,但是我們要向建立一個類似的對象,比如name叫做Lee的,怎麼辦?那隻能重新再寫一遍相同的代碼嘍,你說可以直接將person賦值給person1啊,這樣不省事多了麼,可是這樣做會覆蓋掉person對象的屬性值的,那你說咋辦?

        為瞭解決這個問題,我們可以使用原廠模式,接觸過設計模式的小夥伴們應該都知道這是什麼玩意。這裡不再多說了,直接上代碼,看如何?:

<span style="font-size:18px;">//原廠模式function CreateObject(name,age){var obj =new Object();obj.name=name;obj.age=age;obj.run=function(){return this.name+this.age+'奮鬥中……';};return obj;};//建立對象執行個體var person1 =CreateObject('Lian',18);var person2 =CreateObject('Jack',22);alert(typeof person1);    //返回Objectalert(person2 instanceof Object); //返回true</span>

        怎麼樣,是不是解決了重複執行個體化的問題,但是隨之而來的另一個問題是識別問題,什麼意思,就是我們根本無法搞清楚他們到底是哪個對象的執行個體,因為記憶體中會有兩個Object類型的執行個體對象,你根本不知道哪個是哪個。

        那怎麼辦呢?我們在物件導向的學習中接觸過類,那麼就一定知道建構函式,也叫做構造方法,這種函數是用來初始化類的。我們可以採用建構函式來建立特定的對象,類似於Object對象。舉個例子:

<span style="font-size:18px;">//建構函式方式function Person(name,age){this.name=name;this.age=age;this.run=function(){return this.name+this.age+'吃飯中……';};}var person1=new Person('Lian',100);var person2=new Person('Yang',100);alert(person1 instanceof Person); //返回true,很清楚的告訴我們person1從屬於Person</span>

        小結:使用建構函式的方法,既解決了重複執行個體化的問題,又解決了對象識別的問題,他與原廠模式的區別在於:

        1沒有顯式的建立對象(newObject());

        2直接將屬性和方法賦值給this對象;

        3沒有return語句

        建構函式和普通函數的唯一區別就是他們調用的方式不同。只不過,建構函式也是函數,必須要用new運算子來調用,否則就是普通函數。

JavaScript學習2:物件導向

聯繫我們

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