學(xué)習(xí)javascript(8)
來(lái)源:易賢網(wǎng) 閱讀:734 次 日期:2014-09-09 11:43:58
溫馨提示:易賢網(wǎng)小編為您整理了“學(xué)習(xí)javascript(8)”,方便廣大網(wǎng)友查閱!

創(chuàng)建自己的對(duì)象

要?jiǎng)?chuàng)建自己的對(duì)象實(shí)例,必須首先為其定義一個(gè)構(gòu)造函數(shù)。構(gòu)造函數(shù)創(chuàng)建一個(gè)新對(duì)象,賦予對(duì)象屬性,并在合適的時(shí)候賦予方法。例如,下面的示例為 pasta 對(duì)象定義了構(gòu)造函數(shù)。注意 this 關(guān)鍵字的使用,它指向當(dāng)前對(duì)象。

// pasta 是有四個(gè)參數(shù)的構(gòu)造器。

function pasta(grain, width, shape, hasEgg)

{

// 是用什么糧食做的?

this.grain = grain;

// 多寬?(數(shù)值)

this.width = width;

// 橫截面形狀?(字符串)

this.shape = shape;

// 是否加蛋黃?(boolean)

this.hasEgg = hasEgg;

}

定義了對(duì)象構(gòu)造器后,用 new 運(yùn)算符創(chuàng)建對(duì)象實(shí)例。

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

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

可以給對(duì)象實(shí)例添加屬性以改變?cè)搶?shí)例,但是用相同的構(gòu)造器生成的其他對(duì)象定義中并不包括這些屬性,而且除非你特意添加這些屬性那么在其他實(shí)例中并不顯示出來(lái)。如果要將對(duì)象所有實(shí)例的附加屬性顯示出來(lái),必須將它們添加到構(gòu)造函數(shù)或構(gòu)造器原型對(duì)象(原型在高級(jí)文檔中討論)中。

// spaghetti 的附加屬性。

spaghetti.color = "pale straw";

spaghetti.drycook = 7;

spaghetti.freshcook = 0.5;

var chowFun = new pasta("rice", 3, "flat", false);

// chowFun 對(duì)象或其他現(xiàn)有的 pasta 對(duì)象

// 都沒(méi)有添加到 spaghetti 對(duì)象

// 的三個(gè)新屬性。

// 將屬性‘foodgroup’加到 pasta 原型對(duì)象

// 中,這樣 pasta 對(duì)象的所有實(shí)例都可以有該屬性,

// 包括那些已經(jīng)生成的實(shí)例。

pasta.prototype.foodgroup = "carbohydrates"

// 現(xiàn)在 spaghetti.foodgroup、chowFun.foodgroup,等等

// 均包含值“carbohydrates”。

在定義中包含方法

可以在對(duì)象的定義中包含方法(函數(shù))。一種方法是在引用別處定義的函數(shù)的構(gòu)造函數(shù)中添加一個(gè)屬性。例如,下面的示例擴(kuò)充上面定義的 pasta 構(gòu)造函數(shù)以包含 toString 方法,該方法將在顯示對(duì)象的值時(shí)被調(diào)用。

// pasta 是有四個(gè)參數(shù)的構(gòu)造器。

// 第一部分與上面相同。

function pasta(grain, width, shape, hasEgg)

{

// 用什么糧食做的?

this.grain = grain;

// 多寬?(數(shù)值)

this.width = width;

// 橫截面形狀?(字符串)

this.shape = shape;

// 是否加蛋黃?(boolean)

this.hasEgg = hasEgg;

// 這里添加 toString 方法(如下定義)。

// 注意在函數(shù)的名稱后沒(méi)有加圓括號(hào);

// 這不是一個(gè)函數(shù)調(diào)用,而是

// 對(duì)函數(shù)自身的引用。

this.toString = pastaToString;

}

// 實(shí)際的用來(lái)顯示 past 對(duì)象內(nèi)容的函數(shù)。

function pastaToString()

{

// 返回對(duì)象的屬性。

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);

// 將調(diào)用 toString() 并顯示 spaghetti 對(duì)象

// 的屬性(需要Internet 瀏覽器)。

window.alert(spaghetti);

更多信息請(qǐng)查看IT技術(shù)專欄

更多信息請(qǐng)查看腳本欄目
易賢網(wǎng)手機(jī)網(wǎng)站地址:學(xué)習(xí)javascript(8)
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門(mén)公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國(guó)考·省考課程試聽(tīng)報(bào)名

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)