检测何时将新属性添加到Javascript对象? [英] Detect when a new property is added to a Javascript object?
问题描述
使用内置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屋!