Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/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 使用object.create(null)创建空对象的影响和好处_Javascript_Performance_Object_Jsperf - Fatal编程技术网

Javascript 使用object.create(null)创建空对象的影响和好处

Javascript 使用object.create(null)创建空对象的影响和好处,javascript,performance,object,jsperf,Javascript,Performance,Object,Jsperf,首先,我制作了一个快速的jsperf测试用例来展示显而易见的: Object.create(null)比使用{}语法创建对象要慢得多。 但是考虑到这一事实,前一种情况在优化和性能方面是否是一种好的选择?换句话说,操纵最轻量级的js对象是否能够充分提高性能,从而在某些情况下成为使用它的合理选择 我指的是您将大量访问对象属性,或者大量使用for in循环的情况 如果在一个库中使用这种方法,人们可能会处理这些不具有标准对象原型所带来的标准属性的对象,那么这种方法的风险是否太大 另外,您知道创建最轻量

首先,我制作了一个快速的jsperf测试用例来展示显而易见的:
Object.create(null)
比使用
{}
语法创建对象要慢得多。

但是考虑到这一事实,前一种情况在优化和性能方面是否是一种好的选择?换句话说,操纵最轻量级的js对象是否能够充分提高性能,从而在某些情况下成为使用它的合理选择

我指的是您将大量访问对象属性,或者大量使用for in循环的情况

如果在一个库中使用这种方法,人们可能会处理这些不具有标准
对象
原型所带来的标准属性的对象,那么这种方法的风险是否太大

另外,您知道创建最轻量级js对象的另一种(更快)方法吗

PS:我做了一个简短的测试用例来展示一个使用
对象。创建(null)
和访问属性比使用
{}


我认为使用
Object.create(null)
创建对象通常是不必要的,不值得牺牲浏览器兼容性和清晰度。使用
{}
语法创建对象时,实际上是在执行
object.create(object.prototype)
,这将创建一个可以访问
object.prototype
中属性的对象。这意味着您可以直接从对象访问
toString
hasOwnProperty
等方法,但也可以根据需要覆盖它们-尽管您应该尽可能避免这样做。至于性能,差别非常小,对象上只有两个属性(如jsperf所示)。如果您的对象有数百或数千个属性,那么差异几乎不存在


总之,如果你不想让你的代码表现得更好,你应该一直努力保持清晰,并努力改进代码的高级算法设计(不是说你还没有);只有在绝对必要的时候才担心微优化。

我同意你的结论,认为质量优于微优化,这是我有时会忘记的一个要点。重点:改进代码的高层次算法设计;只有在绝对必要的时候才担心微观优化。