首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >原型上的JavaScript Object.observe

原型上的JavaScript Object.observe
EN

Stack Overflow用户
提问于 2016-01-16 01:40:14
回答 1查看 137关注 0票数 3

考虑下面的守则:

代码语言:javascript
复制
function createFoo() {
  var val;

  function Foo() {}
  Object.defineProperty(Foo.prototype, 'foo', {
    get: function () {
      return val;
    },
    set: function (value) {
      val = value; 
      document.write('foo value set to : ', value);
    }
  });

  return new Foo();
}



var foo = createFoo();

Object.observe(foo, function (changes) { document.write(changes); });

foo.foo = 'bar';

为什么Object.observe的处理程序从来不被触发?一个对象原型能被“观察”吗?

(请不要建议使用某种第三方图书馆。)

更新

请阅读评论,以获得更多的信息和解决这个问题的办法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-16 01:49:04

代码语言:javascript
复制
foo.foo = 'bar';

既不修改foo对象,也不修改它的原型,因此,观察者不报告任何内容。

下面是在this.val = value;上触发观察者的版本:

代码语言:javascript
复制
function createFoo() {
  

  function Foo() {}
  Object.defineProperty(Foo.prototype, 'foo', {
    get: function () {
      return this.val;
    },
    set: function (value) {
      this.val = value; 
      document.write('foo value set to : ', value);
    }
  });

  return new Foo();
}



var foo = createFoo();

Object.observe(foo, function (changes) { document.write("<br>observer:", changes); });

foo.foo = 'bar';

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34822610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档