Object.create()bug?

时间:2013-07-01 15:37:04

标签: 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');
});

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

错误在哪里?

1 个答案:

答案 0 :(得分:13)

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

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

来自documentation

  

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

有关属性描述符结构的详细信息,请参阅Object.defineProperty documentation。如上面的代码所示,value属性指定属性的值。