我在Object.create方法中将一个对象作为第二个参数传递,但是出现以下错误:



这是错误的代码:

var test = Object.create(null, {
    ex1: 1,
    ex2: 2,
    meth: function () {
        return 10;
    },
    meth1: function () {
        return this.meth();
    }
});

最佳答案

Object.create(proto, props) 有两个参数:


props对象的格式定义为here

简而言之,每个属性描述符的可用选项如下:

{
    configurable: false, // or true
    enumerable: false, // or true
    value: undefined, // or any other value
    writable: false, // or true
    get: function () { /* return some value here */ },
    set: function (newValue) { /* set the new value of the property */ }
}

代码的问题在于,您定义的属性描述符不是对象。

这是正确使用属性描述符的示例:
var test = Object.create(null, {
    ex1: {
        value: 1,
        writable: true
    },
    ex2: {
        value: 2,
        writable: true
    },
    meth: {
        get: function () {
            return 'high';
        }
    },
    meth1: {
        get: function () {
            return this.meth;
        }
    }
});

关于javascript - 在Object.create中使用属性描述符的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37672693/

10-11 12:08