Javascript 创建对象的方法
查看带注释的Backbone.js源代码,发现它们有一种独特的方式来创建一些我以前从未见过的对象Javascript 创建对象的方法,javascript,oop,object,backbone.js,Javascript,Oop,Object,Backbone.js,查看带注释的Backbone.js源代码,发现它们有一种独特的方式来创建一些我以前从未见过的对象 (MyObject = {}); 例如,他们在同步功能中使用它,如下所示: MyObject || (MyObject = {})['foo'] = bar; 我想知道为什么用户会以这种方式创建或与对象交互,以及这种方式在开发过程中会带来什么好处 我想到的第一个想法是,这是一个函数,返回作为参数传递的对象,但不明白为什么不这样做: Myobject = MyObject || {}; 主干网使
(MyObject = {});
例如,他们在同步功能中使用它,如下所示:
MyObject || (MyObject = {})['foo'] = bar;
我想知道为什么用户会以这种方式创建或与对象交互,以及这种方式在开发过程中会带来什么好处
我想到的第一个想法是,这是一个函数,返回作为参数传递的对象,但不明白为什么不这样做:
Myobject = MyObject || {};
主干网使用示例
(attrs = {})[key] = val;
您确定这些是您想要的分组括号吗?你是说
(MyObject | | MyObject={})['foo']=bar代码>?分配返回分配的值。MyObject={}
的返回值是分配给MyObject
的{}
。假设@Matt的猜测是正确的,代码将为MyObject
分配一个新对象,如果它是falsy(这弱意味着MyObject
未定义或为空),则将bar
分配给MyObject
的键,添加了一个示例:源代码:)感谢您的支持replies@JhonnatanGonzalezRodriguez是的,在那个片段中有类似的原则。变量attrs
被分配了一个空对象,由于赋值返回指定的值,括号中的表达式计算为刚刚分配给attr
的{}
。然后将val
指定给此对象的键
属性。净结果相当于attr={};attr[key]=val代码>。