NodeJS中的Object.create

Bar*_*eyn 3 node.js object-create

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

假设一个像这样的对象:

objDef = {
  prop1: "Property 1"
}

obj = {
  prop2: "Property 2"
}

var testObj = Object.create(obj, objDef);
Run Code Online (Sandbox Code Playgroud)

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

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

如何在Node中使用它?我想基本上创建一个具有默认值的对象.

小智 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"
    }
}
Run Code Online (Sandbox Code Playgroud)


Sly*_*nal 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
    }
}
Run Code Online (Sandbox Code Playgroud)