在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ javascript在不用框架的情況下,為了防止全局變量污染等,如何寫更好(或更

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

用函數(shù)的形式

//做飯 
let cook = function(){
    let FoodMaterial = 'Tomatoes'; //食材:西紅柿
    let Spice = '食用鹽'; //作料:食用鹽
    return {
        buy:function(){
            console.log('購買' + FoodMaterial + '和' + 'Spice' );
        },
        doFood:function(){
            console.log(`開始做${FoodMaterial}`);
        },
        setFood:function(food){
            //未傳參則不執(zhí)行賦值
            food && (FoodMaterial = food);
        }
    }
}
let o = cook();
o.setFood('肉');
o.buy();    //購買肉和Spice
o.doFood();//開始做肉     

對象的形式

let cook = {
        FoodMaterial : 'Tomatoes', //食材:西紅柿
        Spice :'食用鹽', //作料:食用鹽
           buy:function(){
              console.log('購買' + FoodMaterial + '和' + 'Spice' );
        },
        doFood:function(){
              console.log(`開始做${FoodMaterial}`);
        },
        setFood:function(food){
                //未傳參則不執(zhí)行賦值
           food && (FoodMaterial = food);
        }
    }
    let o = cook;
    o.setFood('肉');
    o.buy();    //購買肉和Spice
    o.doFood();//開始做肉

問題一:

以上代碼結果一樣,但是有什么不同么,用哪個更好?

問題二:

在不用js框架的情況下,請問怎么編寫代碼比較好,附代碼更好
回答
編輯回答
命多硬

一個封閉空間解決所有變量污染,函數(shù)重復現(xiàn)象

es6 lef/const

or

(function(){
    //cose
    var a=1;
    console.log(a);//1
})();
(function(){
    //cose
    var a=2;
    console.log(a);//2
})();
console.log(a);//not defined
2017年9月21日 20:56
編輯回答
妖妖

做個類比,用類創(chuàng)建實例好還是直接寫個實例好?
我不知道該對比什么,答案就是都得用并且看需求。

2017年11月5日 22:28
編輯回答
莓森

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

let o1 = cook; let o2 = cook; 

o1o2是指向同一塊內(nèi)存地址的,所以可以認為此時的o1、o2、cook是同一個對象。

函數(shù)的形式:

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

每執(zhí)行一次函數(shù),就return一個對象,執(zhí)行兩次函數(shù),會創(chuàng)建兩個對象,所以o1o2是沒有關聯(lián)的。

2018年9月3日 14:46
編輯回答
離魂曲

如果是單例,那么明顯后者好;如果是普通類,那么你應該用 new。其它沒啥差別。

2017年7月1日 06:55