Javascript 跟踪对象是否已更改
注意:这听起来可能很愚蠢,因为我可以在按钮上的Javascript 跟踪对象是否已更改,javascript,object,Javascript,Object,注意:这听起来可能很愚蠢,因为我可以在按钮上的onclick事件中获得更改,但这不是我想要的,我希望严格跟踪对象本身的更改以供任何类型的使用,上面的代码只是一个示例。Javascript不允许您在任意对象/变量上设置编程监视点/事件 您可以使用封装将对象内部的单个值隐藏起来,不让外部世界看到,只允许通过具有所需副作用的专用“setter”函数修改这些值。您可以使用get和set方法将其变成实际的项目: // A simple Javascript Object / String var obje
onclick
事件中获得更改,但这不是我想要的,我希望严格跟踪对象本身的更改以供任何类型的使用,上面的代码只是一个示例。Javascript不允许您在任意对象/变量上设置编程监视点/事件
您可以使用封装将对象内部的单个值隐藏起来,不让外部世界看到,只允许通过具有所需副作用的专用“setter”函数修改这些值。您可以使用get和set方法将其变成实际的项目:
// A simple Javascript Object / String
var object = "hello";
// Imagine a button in the DOM, and if it's clicked the object value will change
document.getElementById("button").onclick = function(){
window.object = "hello world";
}
// Now I would like to track and do something when the object is changed, ex:
object.onreadystatechange = function(){
alert(object);
}
这里是一个演示工具:您可以使用getter和setter跟踪JavaScript对象,如下所述 你也可以看看,
无论您想使用何种框架,在属性更改时自动触发事件都没有神奇之处。在您的情况下,您应该做的可能是使对象围绕此数据,并仅为其公开get和set方法:
// A simple Javascript Object
var object = new (function(){
this.text = 'hello';
this.setText = function(msg){
this.text = msg
//on change event
}
})();
// Imagine a button in the DOM, and if it's clicked the object value will change
document.getElementById("button").onclick = function(){
object.setText('New Text');
}
最近的Google Chrome版本(例如beta版,带有“启用实验JavaScript”标志)支持Object.observe()API。更多信息请访问和
var something = function()
{
var value = 10;
this.getValue = function()
{
return value;
}
this.setValue = function(newValue)
{
ValueChanging(value, newValue);
value = newValue;
}
var ValueChanging = function(old, new)
{
// Do Something
}
}