【问题标题】:javascript automatically add property when extending object扩展对象时javascript自动添加属性
【发布时间】:2012-06-13 08:35:30
【问题描述】:

在使用 JavaScript 时,我遇到了一种情况,我不确定我想要完成的工作是否可行:

考虑以下对象:

var data = {};

是否可以通过以下方式扩展“数据”来修改它

data.entry_1 = {
    'prop_1': 'set_1',
    'prop_2': 'set_2'
};

一个新属性会自动附加到新对象上,也就是说

data.entry_1 = {
    'prop_1': 'set_1',
    'prop_2': 'set_2',
    id: 1 // automatically created property
};

是否可以在不使用“外部”方法的情况下完成上述操作,例如没有 data.newEntry(object)?

【问题讨论】:

  • 查看 javascript 原型。
  • 目前没有办法这样做,但请等待一段时间,然后在 Firefox 推出时重试Proxy objects。如果您太不耐烦,您甚至可以联系node-proxy。干杯。 =)

标签: javascript object dynamic properties


【解决方案1】:
var data = {
   set entry_1 (val) {
       for(var i in val) { this[i] = val[i] };
       this["id"] = 1;
   }
}

在 IE9+ 和所有其他现代浏览器中受支持。

【讨论】:

  • 感谢所有快速回复!我不会使用原型,因为 Object.prototype 并不是我真正想要的……就 setter 而言:这与我正在寻找的最接近。如果一个通用的设置器,也就是说不仅为enty_1,而且为任何条目x可以指定我的问题将得到解决。这就是代理所得到的,至少从我在 Mozilla 上读到的内容来看。我想我现在会坚持使用好的 ol' 对象方法。再次感谢所有答案!
猜你喜欢
  • 2015-08-27
  • 2013-09-29
  • 1970-01-01
  • 1970-01-01
  • 2021-02-02
  • 2022-01-18
  • 1970-01-01
  • 2014-05-29
  • 2014-08-26
相关资源
最近更新 更多