问题标签 [object.observe]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
895 浏览

javascript - Object.Observe 同步回调

我一直在 Chrome v36 中试验 Object.observe。我最初的意图是在我的模型中将其用于业务逻辑,但异步行为似乎使这成为不可能。我将其归结为以下示例:

JSFiddle链接,带有 jQ​​uery。

我的问题是在“属性更改”之前调用了“输出”。有什么方法可以使 Object.Observe 同步,还是我应该这样做更好?(我正在使用 AngularJS,顺便说一句。)

这里的问题不是向 DOM 添加文本或输出到控制台。someOtherPropety我的业务逻辑要求我在更改时立即更新name,我更愿意将此逻辑封装在我的模型中。

显然,这只是一个示例案例,但我有依赖于立即执行的业务规则。

0 投票
1 回答
511 浏览

javascript - Object.observe/unobserve 如何与垃圾收集交互?

对一个对象有一个活动的 Object.observe 会阻止它被垃圾收集吗?您是否需要先调用 Object.unobserve 才能对其进行垃圾收集?还是 GCing 一个对象会删除它所有的活动观察者?

0 投票
1 回答
587 浏览

javascript - 为什么 object.observe 不适用于输入字段的 value 属性?

我在最新版本的 Chrome 中使用 Object.observe,想知道为什么它不适用于文本输入的“值”属性。下面的代码将记录添加/更改“foo”属性的更改,但不记录更改 value 属性的更改。有人知道为什么吗?

0 投票
0 回答
46 浏览

javascript-events - Object.observe() 有何不同?

我知道 Angular 使用脏检查和 Ember 将一些观察者附加到对象以检测更改。我的问题是 Object.observe() 如何检测变化?它如何知道何时触发?原型中不是也有类似观察者的东西吗?

0 投票
0 回答
407 浏览

javascript - 模型更改检测:Object.observe Polyfill 与 Angular 脏检查

我想知道在模型更改检测方面是否有人对聚合物填充物和角度脏检查进行了任何基准测试。

这两个性能检查是“苹果对苹果”吗? http://jsperf.com/angularjs-digest/50 http://jsperf.com/polymer-dirtycheck/26

在下面的比较中,两个框架都需要注册一个观察者/观察者,然后更新模型。我可以看到在某些浏览器中使用 polyfills 时进行的脏检查是如何进行的。

http://jsperf.com/polymer-comparison

让我知道你的想法。

0 投票
2 回答
252 浏览

javascript - JavaScript 对象镜像/单向属性同步

出于安全目的,我需要一个“镜像”对象。即,如果我创建对象 A,并浅克隆 A 的副本并将其称为 B,则每当 A 的属性发生更改时,我希望 B 自动更新自身以反映更改,而不是相反。换句话说,单向属性同步。

我的问题:在野外是否已经有我不知道的解决方案?

正在考虑使用observe-js(https://github.com/polymer/observe-js)实现一个库,但我认为我应该在继续之前询问一下。谢谢。

0 投票
1 回答
767 浏览

javascript - 为什么这个 Object.observe 通知示例不起作用

我正在尝试在通知(使用 Thingy)下运行此处发布的示例http://www.html5rocks.com/en/tutorials/es7/observe/Object.observe以使用功能。这是我运行的代码片段:

当我尝试运行它时,我得到TypeError: undefined is not a function. 我不熟悉Object.observe,所以为什么会发生错误以及如何解决它。

注意:这需要Object.observe仅在 Chrome 33+ 中存在。

0 投票
1 回答
1301 浏览

javascript - 为什么 Object.observe() 不向回调提供更改的数据路径?

回调的更改数组Object.observe()包含具有以下四个属性的对象:

  • 姓名
  • 目的
  • 类型
  • 旧值

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe#Parameters

path为什么本地没有提供?例子:

有一个 Node.js 模块扩展Object.observe()为还包含路径:observed.js
但我担心本机的性能增益observe()会丢失(如果没有,你能解释一下它是如何实现的吗?)。可能可以浏览模块,但无法想象它会在同步环境中表现良好,我仍然想知道为什么似乎没有人考虑额外的path属性。

0 投票
2 回答
368 浏览

javascript - notifier.performChange 实际上做了什么?

我试图理解Object.getNotifier(object).performChange。从概念上讲,我理解它是为定义“宏”或更高级别的更改而设计的。从示例中,每个人似乎都指的是

我不明白的是,这与简单地执行notifier.performChange直接传递给的匿名函数而不是作为回调有什么不同?换句话说,它与以下内容有何不同:

我已经看到,在最新的规范中,notifier.performChange可能会返回一个对象,然后将其作为通知发出,如下所示:

这消除了notifier.notify原始代码中对以下内容的需求,但是,这是否不是糖,或者这与仅进行更改并自己发出通知之间是否存在功能差异?

0 投票
1 回答
92 浏览

javascript - Object.observe 并不总是给我正确的 Array 上的已删除索引

我有一个带有观察者功能的列表:

根据更改对象删除的索引是2,但是我删除了索引1,而列表实际上删除了索引1。你知道为什么吗?

是否因为索引 1 被更新以获取索引 2 的值而索引 2 被删除?有没有办法获得实际删除的元素索引?