标签: object.observe

哪些浏览器支持Object.observe?

哪些浏览器支持Object.observe?我很惊讶我无法找到任何关于此的信息.

(您是否了解此功能的预计到达时间?)

关于Object.observe:"Object.observe允许直接观察对ECMAScript对象的更改.它允许观察者接收按时间排序的更改记录序列,这些记录描述发生在观察对象集合中的一组更改. " - 请参阅ecmascript.org,解决方案部分.)


编辑 2015年11月:显然Object.observe已被取消:

http://www.infoq.com/news/2015/11/object-observe-withdrawn

https://esdiscuss.org/topic/an-update-on-object-observe
"我打算从TC39撤回Object.observe提案"

https://esdiscuss.org/topic/save-object-observe-please-make-weakmap-weakset-observable
"保存Object.observe()!(请)"

javascript browser observable object.observe

55
推荐指数
3
解决办法
2万
查看次数

Object.observe()如何影响性能?

所述Object.observe()的JavaScript API允许任何一段代码以接收改变通知任何JavaScript对象的所有属性的变化.

这是否会严重影响JavaScript引擎(即V8)可以执行的代码生成和性能优化?如果必须生成更改通知,现在生成的本机代码似乎必须检查对象的每次写入.无法静态确定给定对象是否设置了通知.因此检查无法优化.

似乎任何符合要求的JavaScript引擎现在都因此API而导致性能永久严重损失.

javascript performance javascript-engine object.observe

13
推荐指数
1
解决办法
4642
查看次数

Object.observe - 并非所有主流浏览器都支持,我可以使用什么作为替代方案?

我有这个功能在Chrome中工作,当一个名为finishedLoading的变量改变值时,它会打印到控制台.

Object.observe(finishedLoading, function(id, oldval, newval) {
         console.log('finished loading' + id + ' went from ' + oldval + ' to ' + newval);
     }
Run Code Online (Sandbox Code Playgroud)

这在一堆其他现代浏览器中不起作用(例如firefox,safari).有没有我可以使用的替代方案可以更好地支持?谢谢!

javascript object.observe

13
推荐指数
1
解决办法
3064
查看次数

Object.observe撤销和RxJS和Angular 2

我有点困惑,因为据说Obejct.observe已退出ES2016.

另一方面,有关Angular Connect的讨论提到他们会依赖它.

所以到目前为止我理解Angular 2不直接依赖于Object.observe,而是依赖于使用Object.observe的RxJS

你能帮我理解这次退出的影响吗?我也很困惑这将如何影响功能性反应性JavaScript开发.

对不起,如果这是一个愚蠢的问题,但所有这些概念对我来说都是新的.

frp rxjs object.observe angular

11
推荐指数
1
解决办法
1202
查看次数

Object.observe会对Angularjs有显着的推动作用吗?

现在,Angular在几千个物体之后减速,这阻止我们构建像电子表格或Conway的生命游戏之类的东西.

一旦实现了Object.observe(在遥远的未来),Angular可以实现这些吗?或者DOM操纵会成为阻塞点吗?

angularjs object.observe

9
推荐指数
1
解决办法
2234
查看次数

使用变更监视器观察Object.observe()下的本机属性

现在Object.observe()是在默认情况下在Chrome中,我遇到了一堆的情况下,我想重复使用内置的属性(浏览器的hidden,title,draggable),但*Changed观察家不再被调用的属性发生变化时.

一个例子是hidden:http://jsbin.com/jizikaje/1/edit(hiddenChanged()永远不会被调用)

我目前的解决方法是使用attributeChanged()观察属性更改:

attributeChanged: function(attrName, oldVal, newVal) {
  // Cannot use *Changed watchers for these native properties.
  if (attrName == 'hidden') {
    this.marker.setVisible(!this.hidden);
  }
}
Run Code Online (Sandbox Code Playgroud)

推荐的方法是什么?


BTW,在尝试使用本机属性时发出警告将需要很长时间进行调试:https://github.com/Polymer/polymer/issues/379

javascript polymer object.observe

7
推荐指数
1
解决办法
596
查看次数

有没有办法修改观察值而不触发Polymer中的观察者回调

就像标题所说的那样.有没有办法在不触发Polymer中的观察者回调的情况下修改观察值?

例如

Polymer({
        is: 'my-component',

        properties: {
            aValue: {
                type: Number,
                value: 0,
                observer: '_valueChanged',
                notify: true
            },
            ref: {
                type: Object,
                computed: '_computeRef(channel, channelNumber)'
            }
        },

        _computeRef: function(channel, channelNumber) {

            var ref = new Firebase("/*link*/");
            ref.on("child_changed", function(data) {
               this.aValue.setWithoutCallingObserver(data.val());
            }.bind(this));

            return ref;
        },

        _valueChanged: function() {
            var message = { aValue: this.aValue };
            if (this.ref) {
                this.ref.set(message);
            }
        }

    });
Run Code Online (Sandbox Code Playgroud)

这将是有用的,因为现在我遇到以下情况中的滞后:

  1. 适应aValue第三方应用程序
  2. Firebase会更新所有客户端
  3. .on回调设置值并触发观察者回调
  4. 导致.set到firebase
  5. 回到2.

更新:问题与firebase无关.我相信解决方案是控制如何将更新应用于Polymer中的观察值.部分原因是对firebase商店中的值的更改也可以由第3方(不一定是Web)应用程序进行.

polymer object.observe

7
推荐指数
1
解决办法
907
查看次数

Object.observe/unobserve如何与垃圾收集进行交互?

在对象上有一个活动的Object.observe是否会阻止它被垃圾回收?您是否需要先调用Object.unobserve以允许它被垃圾回收?或者GCing一个对象是否删除了所有活动的观察者?

javascript garbage-collection ecmascript-harmony object.observe

6
推荐指数
1
解决办法
439
查看次数

Ember.js对象观察者是否等同于ES6 Harmony Object.observe?

看看对象内部的新观察ES6特征,我想知道Ember和ES6是等价还是不同?我们可以安全地使用Watchjs polyfill with ember吗?

javascript ecmascript-harmony ember.js object.observe

5
推荐指数
1
解决办法
1233
查看次数

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

我在最新版本的Chrome中使用Object.observe,并想知道为什么它不能用于文本输入的'value'属性.下面的代码将记录添加/更改'foo'属性的更改,但不会更改value属性.谁知道为什么?

var myTextInput = document.getElementById('myTextInput');

Object.observe(myTextInput, function(changes){

  changes.forEach(function(change) {
    console.log(change);
  });

});

myTextInput.value = 'test123';
myTextInput.foo = 'bar';
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome object.observe

5
推荐指数
1
解决办法
573
查看次数