【问题标题】:Get notified of reference changes in JavaScript获取有关 JavaScript 参考更改的通知
【发布时间】:2016-12-18 14:31:58
【问题描述】:

有没有办法在参考更改时收到通知?

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

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 */ }

【问题讨论】:

  • 我将其作为副本关闭,因为我相信链接的副本涵盖了这一点,并且不仅指出了 ecma 7 中出现的新功能,而且还指出了 github 上的一个 shim,它有助于弃用的观察功能。跨度>
  • 这也可能是重复的问题:stackoverflow.com/q/28661401/1026459
  • @TravisJ 但他对观看/观察/代理属性更改不感兴趣;他对观察变量本身很感兴趣。

标签: javascript observable object.observe


【解决方案1】:

“参考变化”似乎是指变量的值发生变化。

不,没有现有的或建议的方法来做到这一点。

可以观察到的——无论是使用垂死的Object.observe 提案还是代理,都是属性值的变化。

【讨论】:

  • 是的,也许这是一个更清晰的描述。我不想陷入引用/值语义中。但是,是的,我正在寻找关于variable 值的更改观察者/didSet,其中变量在当前Scope 中定义为identifier。有时答案是“不”,得到一个坚定的“不”真是太好了。有时我会感到惊讶并获得提案的参考,这也很棒。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-27
  • 2011-02-18
  • 2012-09-30
  • 1970-01-01
  • 2014-02-15
相关资源
最近更新 更多