Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.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_Object - Fatal编程技术网

Javascript 以下对象声明之间有什么区别?

Javascript 以下对象声明之间有什么区别?,javascript,object,Javascript,Object,我正在开发一个PoC,我偶然发现了一些代码,但我不知道它们之间的区别,也不知道这种声明对象的方式,d和g之间的区别 var d; (function(d) { function f() { console.log(23); } d.fo = f; }) (d || (d = {})); var g = { fo: function() { console.log(44); }, me: function() { console.log(33);

我正在开发一个PoC,我偶然发现了一些代码,但我不知道它们之间的区别,也不知道这种声明对象的方式,d和g之间的区别

var d;
(function(d) {
  function f() {
    console.log(23);
  }
  d.fo = f;
})
(d || (d = {}));

var g = {
  fo: function() {
    console.log(44);
  },

  me: function() {
    console.log(33);
  }
}
d.fo();
g.fo()

第一种方法允许您将
fo
方法添加到
d
中的任何现有对象,如果
d
未初始化,则默认情况下会创建一个新对象。你可以改变

var d;

第二种方法总是创建一个新的对象
g
,该对象只具有在其中定义的属性(尽管您以后总是可以添加新属性)


除此之外,没有什么显著差异,它们只是不同的样式。

第一种方法允许您将
fo
方法添加到
d
中的任何现有对象中,如果
d
未初始化,则默认情况下会创建一个新对象。你可以改变

var d;

第二种方法总是创建一个新的对象
g
,该对象只具有在其中定义的属性(尽管您以后总是可以添加新属性)


除了这些,没有什么显著的区别,它们只是不同的风格。

我想第二种方式更干净。第一种方法使用iLife,但我认为没有必要使用iLife来查看对象文字语法。我想第二种方法更简洁。第一种方法使用iLife,但我认为没有必要使用iLife查看对象文字语法。