課程
/前端開發
/JavaScript
/阿當大話西游之WEB組件
為什么配置寫在構造函數Window里,而alert等方法寫在Window的Prototype里?可不可以直接把alert等方法直接寫在構造函數里?
2014-11-12
源自:阿當大話西游之WEB組件 10-1
正在回答
直接把alert等方法直接寫在構造函數里的話,每個實例都需要重新創建構造函數里面的方法,而且每個實例里面的方法都不相等,這也算是構造函數模式創建對象的缺點
不知道對不對=? =
用new生成實例對象是無法共享屬性和方法的
var w1=new window();
var w2=new window();
他們的屬性和方法是獨立的 修改其中一個,不會影響到另一個? 是各自本地的屬性.所以寫在構造函數里是對資源的浪費
而 window.prototype中放入的都是可共享的屬性和方法 (原型中的) 當修改w1.prototype.屬性或方法 時,w2.prototype.屬性或方法也會改變
結論 : 如果寫在構造函數中每次創建實例都會生成新的,實例自身的window().alert()? 浪費資源 且 無法共享
如果只是把alter的函數體寫在構造函數里,是可以的,只是調用方式不同了,我反而覺得會更方便一點:w.Window(cfg); 少一個alter函數調用。因為你要new Window就是為了alert嘛!
但是confirm和prompt是不能定義在構造函數里的,這樣的話在構造函數外部無法調用。
舉報
衡量攻城師能力是否成熟的重要指標,本課程會以彈窗組件為例
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-03-23
直接把alert等方法直接寫在構造函數里的話,每個實例都需要重新創建構造函數里面的方法,而且每個實例里面的方法都不相等,這也算是構造函數模式創建對象的缺點
2015-11-13
不知道對不對=? =
用new生成實例對象是無法共享屬性和方法的
var w1=new window();
var w2=new window();
他們的屬性和方法是獨立的 修改其中一個,不會影響到另一個? 是各自本地的屬性.所以寫在構造函數里是對資源的浪費
而 window.prototype中放入的都是可共享的屬性和方法 (原型中的) 當修改w1.prototype.屬性或方法 時,w2.prototype.屬性或方法也會改變
結論 : 如果寫在構造函數中每次創建實例都會生成新的,實例自身的window().alert()? 浪費資源 且 無法共享
2015-06-29
如果只是把alter的函數體寫在構造函數里,是可以的,只是調用方式不同了,我反而覺得會更方便一點:w.Window(cfg); 少一個alter函數調用。因為你要new Window就是為了alert嘛!
但是confirm和prompt是不能定義在構造函數里的,這樣的話在構造函數外部無法調用。