检测何时将新属性添加到Javascript对象? [英] Detect when a new property is added to a Javascript object?

查看:137
本文介绍了检测何时将新属性添加到Javascript对象?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用内置javascript对象的简单示例:
navigator.my_new_property =some value; //我们可以检测到这个新属性是否被添加?

A simple example using a built-in javascript object: navigator.my_new_property = "some value"; //can we detect that this new property was added?

我不想经常轮询对象以检查新属性。
是否有某些类型的更高级别的setter用于对象而不是明确声明要监视的属性?

I don't want to constantly poll the object to check for new properties. Is there some type of higher level setter for objects instead of explicitly stating the property to monitor?

再次,我不想检测属性值已更改,而是在添加新属性时。

Again, I don't want to detect if the property value changed, but rather when a new property is added.

创意?
谢谢

Ideas? thanks

推荐答案

不。确定何时写入属性的现有方法:

Nope. The existing methods of determining when a property gets written to:


  • 使用 defineProperty定义的ECMAScript 5 setter(obj, name,fn);

  • 使用 __ defineSetter __(name,fn)定义的遗留JavaScript setter ;

  • 传统的Netscape / Mozilla watch(name,fn);

  • an ECMAScript 5 setter defined using defineProperty(obj, name, fn);
  • a legacy JavaScript setter defined using __defineSetter__(name, fn);
  • a legacy Netscape/Mozilla watch(name, fn);

都是基于名称的,因此无法捕获使用以前未知名称编写的新属性。无论如何, navigator 可能是'主机对象',所以你不能依赖任何普通的JavaScript Object 接口可用。

are all name-based, so can't catch a new property being written with a previously-unknown name. In any case, navigator may be a ‘host object’, so you can't rely on any of the normal JavaScript Object interfaces being available on it.

提供回调的轮询或显式setter方法就是你能做的所有事情。

Polling, or explicit setter methods that provide callback, is about all you can do.

类似情况: javascript阵列上的Getter / setter?

这篇关于检测何时将新属性添加到Javascript对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆