在下面的简单测试代码中,我使用工厂函数来实例化一个对象。当我使用Object.keys
,Object.values
& Object.entries
它返回我期望的值。
"use strict"
function testFunction(x, y) {
return {
firstKey: x,
secondKey: y
}
}
let testObject = testFunction('ONE', 'TWO'); //generic factory function
console.log(Object.keys(testObject));
console.log(Object.values(testObject));
console.log(Object.entries(testObject));
当我使用Object.assign
实例化对象时,它也可以按预期工作。
"use strict"
function testFunction(x, y) {
return {
firstKey: x,
secondKey: y
}
}
let testObject = Object.assign(testFunction('ONE', 'TWO')); //Object.assign test
console.log(Object.keys(testObject));
console.log(Object.values(testObject));
console.log(Object.entries(testObject));
但是,当我使用Object.create
实例化对象Object.keys
,Object.values
& Object.entries
返回空数组。这不是我所期望的。 为什么会发生这种情况?为什么通用工厂函数和Object.assign
会返回预测值但Object.create
却没有?
"use strict"
function testFunction(x, y) {
return {
firstKey: x,
secondKey: y
}
}
let testObject = Object.create(testFunction('ONE', 'TWO')); //Object.create test
console.log(Object.keys(testObject));
console.log(Object.values(testObject));
console.log(Object.entries(testObject));