Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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 - Fatal编程技术网

Javascript对象初始化,哪种方法是最好的?

Javascript对象初始化,哪种方法是最好的?,javascript,oop,object,Javascript,Oop,Object,对象初始化: var myObject = {}; 及 为什么最后一个被视为反模式 谢谢我不确定新对象()是否真的属于“反模式”,但是{}通常是首选,它既简洁又灵活 当您编写JavaScript时,您希望它以简短结尾…如果它在编写时也能简洁易懂,如下所示: var myObject = { key: "value" }; …这样你就能两全其美。此外,在对象中创建对象时,例如: var myObject = { subObj: { key: "value" } }; …然后您可以看到它比可选

对象初始化:

var myObject = {};

为什么最后一个被视为反模式


谢谢

我不确定
新对象()
是否真的属于“反模式”,但是
{}
通常是首选,它既简洁又灵活

当您编写JavaScript时,您希望它以简短结尾…如果它在编写时也能简洁易懂,如下所示:

var myObject = { key: "value" };
…这样你就能两全其美。此外,在对象中创建对象时,例如:

var myObject = { subObj: { key: "value" } };

…然后您可以看到它比可选的
new Object()
语法可读性好得多。

由于数组构造函数存在问题,通常仍然使用文本
{}
,而不是对象
新对象
中的构造函数

您应该始终更喜欢文本而不是构造函数

这与您的问题无关,但这里有一个数组示例
new Array()
如果您不知道它是如何工作的,乍一看可能会令人困惑:

var a = [5,6];
var b = [5];
两者都创建长度分别为2和1的数组。但是考虑一下

var a = new Array(5,6);
var b = new Array(5);
第一个创建一个长度为2的数组,包含元素5和6, 最后一个创建一个长度为5的数组

所以你看,使用文字符号避免了这个陷阱

此外,始终使用文字符号是一致的。当您创建一个字符串时,您也会编写
var t=“Hello world”
,而不是
var t=new string(“Hello world”)

几乎总是这样,是的 我认为“一个人应该总是喜欢这个”这样的说法有点过于笼统,总是有例外。对象文字几乎总是首选,但当您尝试克隆复杂的对象集时,该怎么办??或者尝试实例化

var a = new Array(5,6);
var b = new Array(5);
if (typeof Object.create !== 'function') {
    Object.create = function (o) {
        function F() {}
        F.prototype = o;
        return new F();
    };
}
newObject = Object.create(oldObject);