为了账号安全,请及时绑定邮箱和手机立即绑定

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是指向同一块内存地址的,所以可以认为此时的o1o2cook是同一个对象。

函数的形式:

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

每执行一次函数,就return一个对象,执行两次函数,会创建两个对象,所以o1o2是没有关联的。


查看完整回答
反对 回复 2018-09-24
  • 1 回答
  • 0 关注
  • 488 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信