javascript物件導向程式設計

來源:互聯網
上載者:User

javascript物件導向程式設計


在學習js物件導向編程之前,首先需要知道什麼是物件導向。物件導向語言都有類的概念,通過它可以建立具有相同屬性和方法的對象。但js並沒有類的概念,因此js中的對象和其他語言的對象有所不同。

js對象可以定義為:”無需屬性的集合,其屬性可以是基本值、對象和函數。每個對象都是基於一個參考型別建立的。

js建立對象有以下兩種方法:

1、建立一個Object執行個體:

var person = new Object();

2、使用對象字面量:

 var person ={};

3、原廠模式:

  function createPerson(name,age,job){      var p = new Object();     p.name=name;     p.age=age;     p.job=job;    return p;    }   var p1=createPerson("jack",22,“front-end Engineer");  var p2=.....;

4.建構函式模式:

 function Person(name,age,job){     this.name=name;     this.age=age;    this.job=job;     this.sayName=function(){alert(this.name);};     }    var p1= new Person("jack",22,"front-end Engineer");   var p2=...;

這裡暫停一下,因為建構函式模式比較重要,這裡解釋一下:這裡實際上是經曆了以下4個步驟:

(1)建立一個對象;

(2)將建構函式範圍賦給這個對象(所以this將指向這個新建立的對象)

(3)執行裡面的代碼,為新對象添加屬性;

(4)返回新對象;

上面建立的p1和p2都有一個constructor的屬性,它指向Person。並且p1和p2即使Person的執行個體,同時也是Object的執行個體,因為所有對象都繼承自Object。

缺陷:每個方法都要在執行個體上重新建立一遍,js中的函數是對象,因此可以將函數轉移到建構函式的外部:

 function Person(name,age,job){           this.name=name;          this.age=age;          this.job=job;          this.sayName=sayName;    }     fucntion sayName(){        alert("this.name");   }      var p1=.....;      var p2=....;

5.原形模式:

我們建立的函數都有一個prototype屬性,它是一個指向一個對象的指標。

聯繫我們

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