为什么Object.create会干扰Object.keys,Object.values&的返回值。 Object.entries?

时间:2018-05-08 21:54:44

标签: javascript object

在下面的简单测试代码中,我使用工厂函数来实例化一个对象。当我使用Object.keysObject.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.keysObject.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));

0 个答案:

没有答案