Is property assessor good or edevil? C # thinks good and Java as contrast. What about JavaScript? Maybe yes, maybe no...
Mozilla spidermonkey introduce variety of solutions for getter and setter. Here is the sample:
<HTML>
<Head>
<SCRIPT type = "text/ecmascript">
Function trace (MSG ){
Document. getelementbyid ('console'). innerhtml + = MSG + '<br/> ';
}
</SCRIPT>
</Head>
<Body>
<Div id = "console" class = "debug"> </div>
<SCRIPT type = "text/ecmascript" src = "test-js-getset.js">
</SCRIPT>
</Body>
</Html>
Test-js-getset.js
========================
function test1() {var obj = {prop getter: function () { return 'prop1'; }};trace(obj.prop);obj.prop getter = function () { return 'prop2'; }trace(obj.prop);obj.prop getter = getter function () { return 'prop3'; }trace(obj.prop);}function test2() {function MyObj() {this.__defineGetter__('prop', function () { return 'prop1'; });}var obj = new MyObj();trace(obj.prop);obj.__defineGetter__('prop', function () { return 'prop2'; });trace(obj.prop);}function test3() {var obj = {foo: null,get prop() { return 'prop1'; },set prop(v) { trace(v); },bar: null,};trace(obj.prop);obj.prop = 'hello';}test1();test2();test3();
Unfortunately, M $ ie supports no one of above. and even codes of test1 () and test3 () will cause syntax error. only Test2 () can be interpreted by IE, u can catch the exception for the absence of _ definegetter __. but nothing else can u do, because I found no solution of emulating _ definegetter _ in IE, though there are some tricks to make a object with properties via wrap VBSCRIPT or introduce HTC.