NodeJS中的Object.create

时间:2013-01-13 03:02:28

标签: node.js object-create

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

假设一个像这样的对象:

objDef = {
  prop1: "Property 1"
}

obj = {
  prop2: "Property 2"
}

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

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

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

如何让它在Node中运行?我想基本上创建一个具有默认值的Object。

3 个答案:

答案 0 :(得分: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"
    }
}

答案 1 :(得分: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
    }
}

答案 2 :(得分:0)

Object.prototype.test = 0;

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