Property assessor (getter/setter) in JavaScript

王朝html/css/js·作者佚名  2006-02-28
窄屏简体版  字體: |||超大  

Is property assessor good or evil? 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.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航