window.js代碼段 ? Window.prototype =$.extend(...)最后返回的是一個全新的對象{}還是從new widget.Widget()擴展的對象。
?????????Window.prototype= $.extend({},new widget.Widget(),{...}),返回的是全新對象{}里面包含key,value,還是一個new widget.Widget()對象實例的擴展對象?
????????????這兩個還是有區(qū)別的。如果是全新對象{},那么它的原型對象prototype是一個{},也就是object,如果是從new widget.Widget()對象實例的擴展對象,那么原型對象就包含{on:xxx,fire:xxx}這兩個key value的map。debug跟蹤下去,extends后返回的是全新對象{},將屬性都掛載到了這個對象上了。像老師說的,混合了三個對象的實例。后面兩個往第一個對象上加屬性。從chrome的console上也可以看出來,打斷點到window.js 的? return {Window:Window};這個代碼段,控制臺輸入?Window.prototype得到如下實例,
Object?{handlers:?Object,?on:?function,?fire:?function,?alert:?function,?prompt:?function…}
on 和fire是掛在這個Object上的也就是window的prototype上,如果不顯示,說明是掛在了new Widget()這個對象上了。
2016-02-19
prototype這個是擴展屬性來著 就是原有的對象繼續(xù)增加屬性