作者godman362 (卯)
看板Ajax
标题[ js ] Object.create
时间Fri Feb 24 09:33:10 2017
想请教关於 Object.create 所 return 的物件属性
我目前写了一段code,如下:
-------------------------------------------
let a = Object.create({}, {
foo: {
value: 1,
enumerable: true,
writable: true,
configurable: true
},
bar: {
value: 2,
enumerable: false,
writable: false,
configurable: false
}
})
let b = Object.create(a)
console.log(Object.getPrototypeOf(b))
-------------------------------------------
我把这段code跑在四个不同的地方,分别是:
1. Firefox 51.0.1 的 debug console
2. Chrome 56.0.2924.87 debug console
3. NodeJS 7.5.0 和从github上checkout最新版
4. v8 checkout from github
在1, 2中,最後的console.log会显示 ['foo', 'bar']
在3, 4中,则会显示['foo']
想请教是我哪边有理解错误,导致结果不如我预期?
另外想再请教,Chrome内部应该也是用v8做js的engine
为什麽结果和单纯使用v8结果不同?
还请先进赐教,感谢
--
ˍˍ
很多人在即将失去的时候,不知他即将失去,最後他就真正失去 ▕天险▏
其实,一个不曾失去的人最可怜。因为,他永远学不会什麽叫珍惜。▕刀藏▏
 ̄ ̄
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.134.71.154
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Ajax/M.1487899993.A.4BF.html
1F:推 mrbigmouth: 我测试了一下 执行结果的b应该都是一样的 只是後两 02/24 10:09
2F:→ mrbigmouth: 个环境下的console.log不会把enumerable:false的东西 02/24 10:10
3F:→ mrbigmouth: 拿出来显示 之所以会如此的原因不明 02/24 10:10
4F:→ godman362: 那想请教,那getPrototypeOf的结果算相同吗? 02/24 10:26
5F:→ godman362: 照m大的说法,是console module过滤掉 02/24 10:26
6F:→ godman362: 可是我在standalone v8底下也是这样,没console module 02/24 10:26
7F:→ godman362: 我在v8内是把console换成JSON.stringify 02/24 10:27
8F:→ godman362: 结果和我内容描述的一样 02/24 10:27
9F:→ godman362: 所以这样是JSON.stringify也过滤了enumerable吗? 02/24 10:28
10F:→ godman362: 还请不吝赐教 02/24 10:28
11F:推 mrbigmouth: JSON.stringify本来就会滤掉enumerable 你在前两个环 02/24 10:39
12F:→ mrbigmouth: 境执行的结果应该一样喔 02/24 10:39
13F:→ mrbigmouth: getPrototypeOf结果是相同的 都是a 我上面讲不清楚 02/24 10:40
14F:→ godman362: 喔,了解了,谢谢指点<(__ __)> 02/24 10:40