ES6是否为对象属性引入了明确定义的枚举顺序?
var o = {
'1': 1,
'a': 2,
'b': 3
}
Object.keys(o); // ["1", "a", "b"] - is this ordering guaranteed by ES6?
for(let k in o) {
console.log(k);
} // 1 2 3 - is this ordering guaranteed by ES6?
Run Code Online (Sandbox Code Playgroud) 我想要JSON.stringify一个对象的所有属性,包括那些通过getter定义的属性.但是,当我调用JSON.stringify一个对象时,省略了通过getter定义的属性:
> const obj = {key: 'val'}
undefined
> JSON.stringify(obj)
'{"key":"val"}'
> Object.defineProperty(obj, 'getter', {get: () => 'from getter'})
{ key: 'val' }
> obj.getter
'from getter'
> JSON.stringify(obj)
'{"key":"val"}'
Run Code Online (Sandbox Code Playgroud)
我希望看到:
> JSON.stringify(obj)
'{"key":"val", "getter": "from getter"}'
Run Code Online (Sandbox Code Playgroud)
这可能吗?Object.keys也没有检测到吸气剂:
> Object.keys(obj)
[ 'key' ]
Run Code Online (Sandbox Code Playgroud)
你能查询一下getter键吗?或者你必须提前知道他们的名字吗?