簡單分析javascript物件導向與原型

來源:互聯網
上載者:User

簡單分析javascript物件導向與原型

   為了說明 JavaScript 是一門徹底的物件導向的語言,首先有必要從物件導向的概念著手 , 探討一下物件導向中的幾個概念:1.一切事物皆對象,2.對象具有封裝和繼承特性,3.對象與對象之間使用訊息通訊,各自存在資訊隱藏

  本文主要內容參考來自JavaScript進階程式設計,物件導向與原型章節:

  1、原廠模式

  ECMAScript 可以通過原廠模式來建立對象:

  ?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

//原廠模式

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 obj1 = createObject('Lee', 100); //建立第一個對象

var obj2 = createObject('Jack', 200); //建立第二個對象

//alert(obj1.run()); //列印第一個對象執行個體的run()方法

//alert(obj2.run()); //列印第二個對象執行個體的run()方法

 

//alert(typeof obj1);

//alert(typeof obj2);

alert(obj1 instanceof Object); //true

alert(obj2 instanceof Object); //true

  通過原廠模式建立的對象,解決了重複執行個體化問題,但對象識別問題無法解決(所有對象均是Object),因此要想解決對象識別問題,我們採用下面的建構函式。

  2、建構函式

  ?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

//建構函式建立

function Person(name,age){ //所有建構函式對象都是Object

this.name=name;

this.age=age;

this.run=function(){

return this.name+this.age+"ing...";

};

};

var person1=new Person('zhu1',100);

var person2=new Person('zhu2',200);

alert(person1.run());

alert(person2.run());

 

alert(person1 instanceof Object); //ture

alert(typeof person2); //Person

alert(person2 instanceof Person); // true

var person3=new Object();

Person.call(person3,'zhu3',300);//對象冒充,person3是Object類型,冒充Person類型

alert(person3.run());

  建構函式中this:代表當前範圍對象的引用,如果在全域範圍this代表window對象,如果在建構函式體內,就代表當前建構函式所聲明的對象。

  建構函式方法,及解決了重複執行個體化問題,有解決了對象識別問題,對比跟Factory 方法不同之處可知:

  1.建構函式方法沒有顯示的建立對象(new Object());

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

  3.沒有return 語句;

  4.但是使用建構函式建立必須使用new運算子;

  以上所述就是本文的全部內容了,希望大家能夠喜歡。

聯繫我們

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