猿问

javascript在不用框架的情况下,为了防止全局变量污染等,如何写更好(或更优雅)

用函数的形式

//做饭 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框架的情况下,请问怎么编写代码比较好,附代码更好


慕姐8265434
浏览 489回答 1
1回答

凤凰求蛊

回答下问题一吧,两种用法是不同的。对象的形式:let o1 = cook; let o2 = cook;o1和o2是指向同一块内存地址的,所以可以认为此时的o1、o2、cook是同一个对象。函数的形式:let o1 = cook(); let o2 = cook();每执行一次函数,就return一个对象,执行两次函数,会创建两个对象,所以o1和o2是没有关联的。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答