平时都是以对象字面量来初始化js空对象的,即 var obj={}
, 只是觉得这样子比 var obj=new Object()
来的简单粗暴,没去纠结其性能不性能的,按两个键就完成的事情我才懒得去敲2个单词呢╮(╯▽╰)╭,何况有的ide还自动帮你成对大括号。
偶尔看到网上有人在讨论,自己就直接在chrome上做了个对比试验,结果如下:
至于原因也就无外乎,函数调用的额外开销,如网友的总结:
{} 是字面量,可以立即求值,而 new Object() 本质上是方法(只不过这个方法是内置的)调用,既然是方法调用,就涉及到在proto链中遍历该方法,当找到该方法后,又会生产方法调用必须的堆栈信息,方法调用结束后,还要释放该堆栈
你看,构造方式调用函数既要去找那个方法在哪里,又要执行方法体的内容 balabala, 每次都要这么去搞 自然开销就慢慢的躲起来了。 再回想设计模式里边的单例Singleton,在主要为了使用其对象行为,而不关心实例的隔离状态时,不也是为了省去扭来扭去的开销么。