亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于javascript設計模式里構造器模式的問題

關于javascript設計模式里構造器模式的問題

看到這里一篇文章《JavaScript設計模式一:工廠模式和構造器模式》https://segmentfault.com/a/11...關于這篇文章里的構造器模式。最后有一段:帶原型的Constructor(構造器)    <script type="text/javascript">            function Car(model,year,miles) {                this.model = model;                this.year = year;                this.miles = miles;            }            /** 關于下面這段代碼 **/            Car.prototype.run = function () {                return this.model + " has done " + this.miles + " miles ";            };            /** 關于上面這段代碼 **/            var Benz = new Car('S350',2010,20000);            var Ford = new Car('Ford',2012,12000);                console.log(Benz.run());//"S350 has done 20000 miles "            console.log(Ford.run());   </script>      不用prototyp,把this.run = function(){...}當成方法寫在構造函數里也可以正常運行,兩者有什么不一樣?   和單例模式有關嗎?還是可以避免重復調用的資源浪費?
查看完整描述

2 回答

?
慕斯王

TA貢獻1864條經驗 獲得超2個贊

如果你只有 Car 這一個類用到 run 方法,那么兩種寫法在性能上是沒有區別的。

但是如果你有 Car1 到 Car10 十個類:
如果你寫在類內部,那么你的內存里將有10個 run 方法。
如果你使用prototyp,那么你的內存里將有1個 run 方法。

這么說你理解了嗎?


查看完整回答
反對 回復 2018-08-06
?
楊魅力

TA貢獻1811條經驗 獲得超6個贊

樓上說的不正確,寫到原型上避免的不是類之間的浪費,是不同對象之間的浪費,你如果寫在構造函數中,沒次調用new獲取一個對象,都會生成一個函數體完全一樣的函數,而使用prototype委托,則所有的實例的run方法都委托到了prototype對象上,多少個對象都只有一個函數,樓上說的類是錯的。原型就是構造函數和對象實例的鏈接,與不同的類沒有關系。他說的十個類,除非你每次生成一個類都自己重新寫一遍run函數,否則不會造成他說的那個結果。

查看完整回答
反對 回復 2018-08-06
  • 2 回答
  • 0 關注
  • 1660 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號