js物件導向 多種建立物件方法小結

2021-09-07 13:36:44 字數 2164 閱讀 1319

**js物件導向 多種建立物件方法小結

1.物件字面量

var clock=

}clock.showtime();

//呼叫

2.建立object例項

var clock = new

object();

clock.hour=12;

clock.minute=10;

clock.showhour=function

();clock.showhour();

//呼叫

由此可見 屬性是可以動態新增,修改的。

就是乙個函式,然後放入引數,返回物件,流水線工作

function

createclock(hour,minute,second);

return

clock;

};var newclock = createclock(12,12,12);//

例項化newclock.showhour();//

呼叫

優點:總算有點抽象的概念了。但是不能識別物件的型別呢!

function

clock(hour,minute,second)

}var newclock =new clock(12,12,12);

alert(newclock.hour);

注意:這個new關鍵字是必須,如果不加,clock就不會當成構造函式呼叫,而只是乙個普通的函式。同時,還會意外地給他的外部作用域即window新增屬性,因為此時建構函式內部的this已經對映到了外部作用域了。所以為了安全起見,可以這樣建立。

function

clock(hour,minute,second)

}else

}

建構函式的缺點:由於this指標在物件例項的時候發生改變指向新的例項。這時新例項的方法也要重新建立,如果n個例項就要n次重建相同的方法。於是讓我們來揭開原型模式吧。

function

clock(hour,minute,second)

clock.prototype.hour=12;

clock.prototype.minute=12;

clock.prototype.second=12;

clock.prototype.showtime=function

()var newclock = new

clock();

newclock.showtime();

深度理解原型模型很重要,

首先,每個函式都有乙個prototype(原型)屬性,這個指標指向的就是clock.prototype物件。而這個原型物件在預設的時候有乙個屬性constructor,指向clock,這個屬性可讀可寫。而當我們在例項化乙個物件的時候,例項newclock除了具有建構函式定義的屬性和方法外(注意,只是建構函式中的),還有乙個指向建構函式的原型的指標,ecmascript管他叫[[prototype]],這樣例項化物件的時候,原型物件的方法並沒有在某個具體的例項中,因為原型沒有被例項。(廢話有點多,沒有誤導您吧。別暈)

所以這種模式定義的物件,在呼叫方法的時候過程:呼叫newclock.showtime();先看例項中有沒有,有調之,無追蹤到原型,有調之,無出錯,呼叫失敗。

當然可以這樣寫:

function

clock(hour,minute,second)

clock.prototype=

}var newclock = new

clock();

newclock.showtime();

注意:例項與建構函式原型的聯絡也是通過指標來聯絡的,故可以動態新增修改原型的方法。

這種純原型的模式問題也很明顯,所有的屬性,方法都是共享的,不能讓物件具體化。常常我們想每個物件有自己的屬性。於是,結合前兩種,產生新的模式

function

clock(hour,minute,second)

clock.prototype.showtime=function()

var newclock = new clock(12,12,12);

newclock.showtime();

這裡我們將屬性放在建構函式中,更顯得物件的具體性。

js物件導向,多種建立物件方法!

開始建立物件 1.物件字面量。var clock clock.showtime 呼叫 2.建立object例項 var clock new object clock.hour 12 clock.minute 10 clock.showhour function clock.showhour 呼叫 由...

js物件導向,多種建立物件方法!

1.物件字面量。var clock clock.showtime 呼叫 2.建立object例項var clock new object clock.hour 12 clock.minute 10 clock.showhour function clock.showhour 呼叫 由此可見 屬性是可...

js物件導向 多種建立物件方法小結

js物件導向 多種建立物件方法小結 1.物件字面量 var clock clock.showtime 呼叫 2.建立object例項 var clock new object clock.hour 12 clock.minute 10 clock.showhour function clock.sh...