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

$(function() {
  var rowsEditor = create_RowsEditor('come', 'tmpl_row');
});

错误:TypeError:值不是非空对象

错误在哪里?

4

1 回答 1

13

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

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

文档中:

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

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

于 2013-07-01T15:40:48.053 回答