小编Dat*_*ata的帖子

使用Object.create(null)与{}是不好的做法吗?

我更喜欢使用Object.create(null),这样我就可以将对象用作简单的字典来存储基本信息.如果我需要对象功能,那么我会创建一个普通对象,例如var obj = {x:3, etc};

这是因为{}并不是真正的空白对象,因为它链接到Object原型,所以在循环中你必须做的hasOwnProperty是阻止它在原型链周围跳舞,并且对每个循环进行检查会阻碍性能,尽管它可以忽略不计.

使用Object.create(null)而不是不好的做法{},所以我不必hasOwnProperty在每个循环中写入?

编辑:可能重复,但我不是问他们是如何或为什么他们不同,而是我有兴趣知道其他人是否使用Object.create(null)?在Javascript中是SOP吗?

编辑2:我也更喜欢进行单行检查,例如if(obj[someKey])...ht'Tribute to APJ Kalam Sir'.

javascript

25
推荐指数
5
解决办法
6239
查看次数

为什么我不能在创建对象时查看__proto__?

当我创建一个空白对象时:

var o = {};
Run Code Online (Sandbox Code Playgroud)

为什么我在创建新对象时无法查看'__proto __'对象,但我可以在添加函数时使用它?

在此输入图像描述


编辑:为了完整性,要创建一个真正空白的对象(没有原型链接),我们可以这样做:

var o = Object.create(null);
Run Code Online (Sandbox Code Playgroud)

但出于问题的目的,我将使用o = {}语法.


编辑2:这显示了对象创建时的原型链接,所以__proto的__在那里,但我无法在调试器中查看它们,除非我添加一个函数对象.

在此输入图像描述


编辑3:它适用于Firefox:

在此输入图像描述

javascript object google-chrome-devtools prototype-chain

6
推荐指数
1
解决办法
191
查看次数