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

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

方法直接封裝在對象中和通過prototype封裝有什么區別

方法直接封裝在對象中和通過prototype封裝有什么區別

森林海 2018-08-13 14:09:30
問題一:一個方法封裝在一個對象中時,直接封裝和通過prototype封裝兩種方法有什么區別?var Apple = {}; Apple.prototype.size = function size() {    // do something}; Apple.size = function size() {    // do something};var app1 = new Apple();var app2 = new Apple();關于prototype,我的印象是好像和原型的動態性、prototype的方法時公用的什么的有關系,一旦app1的size改動會影響到app2的size。但是在我目前接觸的項目中,大概是這樣的var City = function city(node) {    this.node = document.querySelector(node);    this.size = null;     ……     ……    this.location = {}; }; City.prototype.a = function a() {}; City.prototype.b = function b() {}; City.prototype.c = function c() {}; City.x = function x() {    // do something}問題二:這里不涉及對實例的改動,但是為什么最后的x方法不用原型而要直接這樣寫(哈哈,這種寫法叫什么?賦值?)呢?
查看完整描述

1 回答

?
侃侃無極

TA貢獻2051條經驗 獲得超10個贊

問題一:

直接封裝會造成內存浪費,每次new都會開辟新的內存。而通過prototype則沒有這個問題,因為都是引用。


問題二:

這種寫法相當于靜態方法,就是無需new即可進行調用。例如Math對象的方法都是這樣。


查看完整回答
反對 回復 2018-09-23
  • 1 回答
  • 0 關注
  • 591 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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