把属性private起来就好了。试试:<SCRIPT LANGUAGE="JavaScript"> <!-- function myObj(){ var emu="hello"; function set(s){emuChanged(emu,s);emu=s;}; function get(){return emu}; this.setEmu = set; this.getEmu = get; } function emuChanged(s1,s2){ alert("Property emu was changed from \""+s1+"\" to \""+s2+"\" .") } var o = new myObj(); o.setEmu("test"); alert(o.getEmu()) //--> </SCRIPT>
或者这样写:<SCRIPT LANGUAGE="JavaScript"> <!-- function myObj(){ var emu="hello"; this.setEmu = function (s){emuChanged(emu,s);emu=s;}; this.getEmu = function (){return emu}; } function emuChanged(s1,s2){ alert("Property emu was changed from \""+s1+"\" to \""+s2+"\" .") } var o = new myObj(); var p = new myObj(); o.setEmu("test"); p.setEmu("world"); alert(o.getEmu()) alert(p.getEmu()) //--> </SCRIPT>
但是要是设置一个记时器来定时所有对象的检查状态又太不经济了。
那就只能自己来保证所有的状态改变都通过set方法来完成,而后在set方法中触发事件函数了。
<!--
function myObj(){
var emu="hello";
function set(s){emuChanged(emu,s);emu=s;};
function get(){return emu};
this.setEmu = set;
this.getEmu = get;
}
function emuChanged(s1,s2){
alert("Property emu was changed from \""+s1+"\" to \""+s2+"\" .")
}
var o = new myObj();
o.setEmu("test");
alert(o.getEmu())
//-->
</SCRIPT>
<!--
function myObj(){
var emu="hello";
this.setEmu = function (s){emuChanged(emu,s);emu=s;};
this.getEmu = function (){return emu};
}
function emuChanged(s1,s2){
alert("Property emu was changed from \""+s1+"\" to \""+s2+"\" .")
}
var o = new myObj();
var p = new myObj();
o.setEmu("test");
p.setEmu("world");
alert(o.getEmu())
alert(p.getEmu())
//-->
</SCRIPT>