Object.create()bug?

por*_*ton 3 javascript oop

function create_RowsEditor(tableId, rowTmplId) {
  rowsEditor = Object.create(null, {
    'XtableId': tableId,
    'XrowTmplId': rowTmplId
  });
  return rowsEditor;
}

$(function() {
  var rowsEditor = create_RowsEditor('come', 'tmpl_row');
});
Run Code Online (Sandbox Code Playgroud)

错误:TypeError:value不是非null对象

错误在哪里?

Fel*_*ing 13

您不能将任意对象作为第二个参数传递,它必须是属性描述符的对象.例如:

rowsEditor = Object.create(null, {
  'XtableId': {
      value: tableId
  },
  'XrowTmplId': {
      value: rowTmplId
  }
});
Run Code Online (Sandbox Code Playgroud)

文档:

如果指定且未定义,则具有可枚举自身属性的对象(即,在其自身上定义的那些属性,而不是沿其原型链的可枚举属性)指定要添加到新创建的对象的属性描述符,以及相应的属性名称.这些属性对应于Object.defineProperties的第二个参数.

有关属性描述符结构的详细信息可以在Object.defineProperty文档中找到.如上面的代码所示,该value属性指定属性的值.