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

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

问题描述

一个使用内置 javascript 对象的简单示例:navigator.my_new_property = "一些价值";//我们能检测到这个新属性被添加了吗?

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

我不想不断轮询对象来检查新属性.是否有某种类型的更高级别的对象设置器,而不是明确声明要监视的属性?

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.

想法?谢谢

推荐答案

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

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

  • 使用 defineProperty(obj, name, fn) 定义的 ECMAScript 5 setter;
  • 使用 __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天全站免登陆