3

与 FireFox 相比,Object.create 在 Nodejs 中的工作方式不同。

假设一个像这样的对象:

objDef = {
  prop1: "Property 1"
}

obj = {
  prop2: "Property 2"
}

var testObj = Object.create(obj, objDef);

上面的 javascript 在 Mozilla 中完美运行。它基本上使用传递给 Object.create 的第二个参数来设置默认值。

但这在 Node.js 中不起作用。我得到的错误是TypeError: Property description must be an object: true.

我怎样才能让它在 Node 中工作?我想基本上创建一个具有默认值的对象。

4

3 回答 3

7

第二个参数应该将属性名称映射到属性描述符,即对象。

请参阅 MDN 上显示的示例:

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/create#Using_%3CpropertiesObject%3E_argument_with_Object.create

你可以通过使用这样的东西来解决:

objDef = {
    prop1: {
        value: "Property 1"
    }
}
于 2013-01-13T03:19:04.183 回答
6

第二个参数Object.create(proto [, propertiesObject ])应该是一个属性描述符对象

此处描述了属性描述符结构: https ://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/defineProperty

这将创建一个可以枚举和修改的具有默认值的属性:

Object.create(obj, {
    prop1: {
        configurable:true,
        enumerable:true,
        value:"Property 1",
        writable: true
    }
}
于 2013-01-13T03:22:19.350 回答
0
Object.prototype.test = 0;

将任何对象中的测试键的默认值设置为 0。

于 2013-02-03T16:50:59.203 回答