获得JavaScript中参考更改的通知

时间:2016-08-11 18:09:29

标签: javascript observable object.observe

有没有办法通知参考变更?

我觉得我需要明确我的意思:

var a = { aa: 1 };
a = { aa: "allowed" }; // `a`'s reference was modified
a.aa = "foo"; // `a` was mutated, but the reference was not modified. Don't care.

这是我感兴趣的引用更改。在Swift中,这是一个didSet块。我想观察a指向的参考文献的更改。

完整示例:

var reel = [];
function print(message) {
  reel = reel.concat([message]); // non-mutating push changes "reel" reference to this new object.
}

Object.SOME_FUNCTION(reel, onChangeReel); // not a real function

function onChangeReel() { /* update the DOM */ }

2 个答案:

答案 0 :(得分:0)

通过"引用更改",您似乎意味着变量值的变化。

不,没有现成的或建议的方法。

可以观看的内容 - 使用奄奄一息的Object.observe提案或使用代理,可以改变属性值。

答案 1 :(得分:-1)

根据Adam Klein(该技术的设计者之一)发布了这个here

  

经过与相关各方的多次讨论后,我计划从TC39撤回Object.observe提案(目前它位于ES规范流程的第2阶段),并希望在今年年底之前取消对V8的支持(根据chromestatus.com的说法,该功能用于0.0169%的Chrome浏览量。)

     

对于一直在尝试使用O.o并正在寻求转换路径的开发人员,请考虑使用MaxArt2501/object-observe之类的填充或polymer/observe-js之类的包装库。