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

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

javascript在不用框架的情況下,為了防止全局變量污染等,如何寫更好(或更優雅)

javascript在不用框架的情況下,為了防止全局變量污染等,如何寫更好(或更優雅)

慕姐8265434 2018-09-24 14:34:47
用函數的形式//做飯 let cook = function(){    let FoodMaterial = 'Tomatoes'; //食材:西紅柿     let Spice = '食用鹽'; //作料:食用鹽     return {        buy:function(){            console.log('購買' + FoodMaterial + '和' + 'Spice' );         },        doFood:function(){            console.log(`開始做${FoodMaterial}`);         },        setFood:function(food){            //未傳參則不執行賦值             food && (FoodMaterial = food);         }     } }let o = cook(); o.setFood('肉'); o.buy();對象的形式let cook = {        FoodMaterial : 'Tomatoes',          Spice :'食用鹽',             buy:function(){              console.log('購買' + FoodMaterial + '和' + 'Spice' );         },        doFood:function(){              console.log(`開始做${FoodMaterial}`);         },        setFood:function(food){                //未傳參則不執行賦值            food && (FoodMaterial = food);         }     }    let o = cook;     o.setFood('肉');     o.buy();        o.doFood();問題一:以上代碼結果一樣,但是有什么不同么,用哪個更好?問題二:在不用js框架的情況下,請問怎么編寫代碼比較好,附代碼更好
查看完整描述

1 回答

?
鳳凰求蠱

TA貢獻1825條經驗 獲得超4個贊

回答下問題一吧,兩種用法是不同的。
對象的形式:

let o1 = cook; let o2 = cook;

o1o2是指向同一塊內存地址的,所以可以認為此時的o1、o2cook是同一個對象。

函數的形式:

let o1 = cook(); let o2 = cook();

每執行一次函數,就return一個對象,執行兩次函數,會創建兩個對象,所以o1o2是沒有關聯的。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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