建立一個最簡單的方式就是建立一個Object的實例,以下:函數
// 1. 調用系統的構造函數 var person = new Object(); // 添加屬性 person.name = "小李"; person.age = 22; person.sex = "F"; // 添加方法 person.eat = function () { console.log("我喜歡吃油炸榴蓮.") }; person.play = function () { console.log("我喜歡玩電子遊戲.") }; person.introduce = function () { console.log("我叫" + this.name + ", 今年" + this.age + "歲."); }; person.introduce(); // 輸出:我叫小李, 今年22歲.
上面的代碼建立了一個名爲object的對象,併爲它添加了三個屬性和三個方法。this
var person = { name: "小李", age: 22, sex: "F", introduce: function() { console.log("我叫" + this.name + ", 今年" + this.age + "歲."); } }
可是,雖然Object構造函數和對象字面量能夠用來建立單個對象,可是這樣建立對象會產生大量的重複代碼。因而人們開始使用工廠模式。以下:code
function createPerson(name, age, sex) { var object = new Object(); person.name = "小李"; person.age = 22; person.sex = "F"; person.introduce = function () { console.log("我叫" + this.name + ", 今年" + this.age + "歲."); }; return person; } var person0 = createPerson("小蘇", "21", "M"); var person1 = createPerson("鐵子", "27", "M");
函數createPerson()可以根據接受的參數來構建一個包含全部信息的Person對象。能夠無數次地調用這個函數,而每次它都會返回一個包含三個屬性和一個方法的對象。工廠模式雖然解決了建立多個相似對象致使的代碼大量重複的問題,但卻沒有解決對象識別的問題,即如何知道一個對象的類型。隨着JavaScript的發展,又一個新的模式出現了,那就是構造函數模式。對象
在ECMAScript中的構造函數能夠建立特定類型的對象。像Object對象和Array對象這樣的原生構造函數,在運行的時候回自動出如今執行環境中。此外咱們也能夠自定義構造函數,從而自定義對象的類型和方法。例如,前面的例子能夠用自動以構造函數重寫爲如下的代碼:遊戲
function Person(name, age, sex) { this.name = name; this.age = age; this.sex = sex; this.introduce = function () { console.log("我叫" + this.name + ", 今年" + this.age + "歲."); }; } var person0 = new Person("小蘇", "21", "M"); var person1 = new Person("鐵子", "27", "M");
要建立一個Person的新實例,必須使用new
操做符。這種操做方式調用構造函數實際上會經歷一下4個過程:ip