作為函式的引數,臨時只用一次的場景。比如設定函式原型物件。
1var obj ={};2//
物件有自己的 屬性 和 行為3//
屬性比如: 年齡、姓名、性別4//
行為: 吃飯、睡覺、走路、講課等... 動作
5var obj2 =
11};
12//
新增其他屬性:
13 obj2.newprop = 123;//
js的動態特性,如果沒有要訪問的屬性,直接新增屬性。
缺點: 不能作為物件建立的模板,也就是不能用
new進行構造新物件。
1var obj3 = new
object();2//
新增屬性
3 obj3.name = 'kitty';
4 obj3.sayhi = function
() ;
缺點:跟上面的方式一樣,只能臨時用一下這個物件,不想作為
new的構造模板是可以的。
把乙個函式物件當做建構函式來使用,一般要把函式物件的首字母大寫
1function
persion() ;
6} 78
var p = new
persion(); 9//
** new 運算子的作用:
10//
第一步:
11//
執行建構函式(new後面的那個函式),在構
12//
造函式內部建立乙個空物件,
13//
第二步: 把上面的空物件跟建構函式的原型物件進行關聯。
14//
第三步:然後把this 指向當前空物件
15//
在建構函式執行結束後,把空物件返回 給 p
1617 console.log( p.name ); //
p.name 從建構函式裡面建立的。
18 p.sayhi(); //
在此方法內部的 this執行 p物件。
公升級改造版本:
//第三種方式有個缺點: 物件的內部的函式會在每個物件中都存乙份
//如果建立的物件非常多的話,那麼非常浪費記憶體。函式的行為是所有物件
//可以共有,不需要每個物件都儲存乙份。所以,可以把函式放到原型中
//進行宣告,那麼所有物件都有了公共的函式,而且記憶體中只保留乙份。
//所有的屬性寫到物件的內部
第三種的公升級版:
1function
sprite()
5 sprite.prototype =,
9 init: function
() 12
};13
14//
繼續公升級: 把屬性的設定做成引數化:
15function
sprite( sname, sage )
1920 sprite.prototype =,
24 init: function
() 27
};28
29//
問題: 1、呼叫者如果傳遞引數的順序發生變化,那麼廢了
30//
問題: 2、 引數增減都會導致函式宣告變化,呼叫的地方也可能發生變化。
31//
如何解決:繼續公升級
32function
sprite( option )
3738 sprite.prototype=,
42 init: function
() 45
};46
47//
繼續優化,把初始化的** 放到init函式中
48function
sprite( option )
52 sprite.prototype =,
56 init: function
( option )
60 };
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.object建構函式或者物件字面量建立當物件 2.建構函式建立物件 3.工廠模式 4.原型模式 5.原型和建構函式組合模式 6.動態原型模式 7.寄生建構函式模式 8.穩妥建構函式模式 缺點使用乙個介面建立很多物件,會產生大量重複 這種模式抽象了建立具體物件的過程.考慮到在ecm...
js物件導向,多種建立物件方法!
1.物件字面量。var clock clock.showtime 呼叫 2.建立object例項var clock new object clock.hour 12 clock.minute 10 clock.showhour function clock.showhour 呼叫 由此可見 屬性是可...