建立自己的對象

來源:互聯網
上載者:User
建立|對象

要建立自己的對象執行個體,必須首先為其定義一個建構函式。建構函式建立一個新對象,賦予對象屬性,並在合適的時候賦予方法。例如,下面的樣本為 pasta 對象定義了建構函式。注意 this 關鍵字的使用,它指向當前對象。

// pasta 是有四個參數的構造器。function pasta(grain, width, shape, hasEgg){    // 是用什麼糧食做的?    this.grain = grain;    // 多寬?(數值)    this.width = width;         // 橫截面形狀?(字串)    this.shape = shape;   // 是否加蛋黃?(boolean    this.hasEgg = hasEgg;  }

定義了物件建構器後,用 new 運算子建立對象執行個體。

var spaghetti = new pasta("wheat", 0.2, "circle", true);var linguine = new pasta("wheat", 0.3, "oval", true);

可以給對象執行個體添加屬性以改變該執行個體,但是用相同的構造器產生的其他對象定義中並不包括這些屬性,而且除非你特意添加這些屬性那麼在其他執行個體中並不顯示出來。如果要將對象所有執行個體的附加屬性顯示出來,必須將它們添加到建構函式或構造器原型對象(原型在進階文檔中討論)中。

// spaghetti 的附加屬性。spaghetti.color = "pale straw";spaghetti.drycook = 7;spaghetti.freshcook = 0.5;var chowFun = new pasta("rice", 3, "flat", false); // chowFun 對象或其他現有的 pasta 對象// 都沒有添加到 spaghetti 對象// 的三個新屬性。// 將屬性‘foodgroup’加到 pasta 原型對象// 中,這樣 pasta 對象的所有執行個體都可以有該屬性,// 包括那些已經產生的執行個體。pasta.prototype.foodgroup = "carbohydrates"// 現在 spaghetti.foodgroupchowFun.foodgroup,等等// 均包含值“carbohydrates”。

在定義中包含方法

可以在對象的定義中包含方法(函數)。一種方法是在引用別處定義的函數的建構函式中添加一個屬性。例如,下面的樣本擴充上面定義的 pasta 建構函式以包含 toString 方法,該方法將在顯示對象的值時被調用。

// pasta 是有四個參數的構造器。// 第一部分與上面相同。function pasta(grain, width, shape, hasEgg){    // 用什麼糧食做的?    this.grain = grain;    // 多寬?(數值)    this.width = width;         // 橫截面形狀?(字串)    this.shape = shape;       // 是否加蛋黃?(boolean    this.hasEgg = hasEgg;      // 這裡添加 toString 方法(如下定義)。    // 注意在函數的名稱後沒有加圓括弧;    // 這不是一個函數調用,而是    // 對函數自身的引用。    this.toString = pastaToString;}// 實際的用來顯示 past 對象內容的函數。function pastaToString(){    // 返回對象的屬性。    return "Grain: " + this.grain + "\n" +        "Width: " + this.width + "\n" +        "Shape: " + this.shape + "\n" +        "Egg?: " + Boolean(this.hasEgg);}var spaghetti = new pasta("wheat", 0.2, "circle", true);// 將調用 toString() 並顯示 spaghetti 對象// 的屬性(需要Internet 瀏覽器)。window.alert(spaghetti);


相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。