NWJS 0.36.3(Node 11.10.1)中没有Object.entries函数

时间:2019-03-08 13:35:46

标签: node.js nwjs

我正在尝试创建一个在对象中将“键”与“值”交换的函数。由于某种原因,我收到TypeError:object.entries不是一个函数。我在这里想念什么或做错什么了?

Object.defineProperty(Object.prototype, 'swapKeysValues', {
    value: function() {
        let obj = {};
        this.entries().forEach(([key, value]) => {
            obj[value] = key;
        });
        return obj;
    }
});

进一步的测试表明:

let foo = { a: 1, b: 2, c: 3 }
typeof foo // "object"
foo instanceof Object // true
foo.entries // undefined
foo.entries() // Uncaught TypeError: foo.entries is not a function

更新:

所以我了解到的是对象(即让foo = {a:1})不继承.entries,.keys或.values函数作为属性,我必须通过调用Object.entries( foo),如tehhowch / SylvainF所指出。工作代码:

Object.defineProperty(Object.prototype, 'swapKeysValues', {
    value: function() {
        let obj = {};
        Object.entries(this).forEach(([key, value]) => {
            obj[value] = key;
        });
        return obj;
    }
});

// Example
let foo = { a: 1, b: 2, c: 3 }
foo.swapKeysValues()

// Output
{1: "a", 2: "b", 3: "c"}

谢谢tehhowch / SylvainF!

1 个答案:

答案 0 :(得分:0)

就像@tehhowch在评论中说的那样,语法为Object.entries(foo)

您可以看到MDn页面:https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/entries