沒有類苟穆,可以直接用對象找前。那么怎么定義對象呢醒叁?
prototype
其實就是類定義
__proto__
其實就是實例的定義
JS創(chuàng)建對象的幾種方式
- 屬性直接在構造函數(shù)中定義
- 函數(shù)在
prototype
中定義
function Parent(){
this.name="李小龍";
this.age=32;
};
Parent.prototype.lev=function() {
return this.name;
};
var x =new Parent();
alert(x.lev());
- 當然平時用的時候坯门,可以直接
new
一個Object
返敬;屬性直接加椅挣,方法還是加到prototype
上头岔。 - JS在對象和類上面的做法相對于靜態(tài)語言來說應該是簡化了,不過還是有借鑒的影子鼠证。
- 比如類和對象的關系峡竣,類是模板,對象是實例量九。這里將重點放在了對象上适掰,類只是放在了一個隱藏屬性
prototype
上,弱化了這種關系荠列。 - 這樣做类浪,其實是弱化繼承,推薦用組合的方式解決問題
- 所謂的“全局”肌似,其實就是在一個
window
對象的內(nèi)部费就,這跟當年的c的靜態(tài)全局變量起到差不多的作用---隔離,文件內(nèi)共享 - 推薦用函數(shù)來解決問題川队,就“全局”函數(shù)好了力细,方便。一定要掛在某個對象下面固额,就要用到
prototype
眠蚂,能不用就不用。 - 類定義其實都是window對象的內(nèi)部類对雪,所以將函數(shù)加入對象意義不是很大河狐。還是那句話,盡量用組合,不要用繼承馋艺。
- 對象定義栅干,應該降格為字典來對待。用對象捐祠,可以用點語法碱鳞,訪問方便很多。不過JS的重點還是方便講對象轉(zhuǎn)字典踱蛀,轉(zhuǎn)JSON窿给,方便網(wǎng)絡傳輸。這個和靜態(tài)語言的強調(diào)Model還是有側(cè)重點區(qū)別的
- 都是對象率拒,包括數(shù)字也是對象崩泡;不過編程思維用過程和組合,少用面向?qū)ο蟮睦^承方式猬膨。
- 這里主要用組合與過程角撞,實現(xiàn)簡單頁面的功能。至于面向?qū)ο蟮脑O計勃痴,思路要變一變谒所。