Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 创建对象的方法_Javascript_Oop_Object_Backbone.js - Fatal编程技术网

Javascript 创建对象的方法

Javascript 创建对象的方法,javascript,oop,object,backbone.js,Javascript,Oop,Object,Backbone.js,查看带注释的Backbone.js源代码,发现它们有一种独特的方式来创建一些我以前从未见过的对象 (MyObject = {}); 例如,他们在同步功能中使用它,如下所示: MyObject || (MyObject = {})['foo'] = bar; 我想知道为什么用户会以这种方式创建或与对象交互,以及这种方式在开发过程中会带来什么好处 我想到的第一个想法是,这是一个函数,返回作为参数传递的对象,但不明白为什么不这样做: Myobject = MyObject || {}; 主干网使

查看带注释的Backbone.js源代码,发现它们有一种独特的方式来创建一些我以前从未见过的对象

(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