与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。
答案 0 :(得分:7)
第二个参数应该将属性名称映射到属性描述符,它们是对象。
请参阅MDN上显示的示例:
您可以使用以下内容解决:
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。