OB *_* OB 20 javascript getter setter internet-explorer incompatibility
无论出于何种原因,自定义对象的Javascript getters/setter似乎适用于任何浏览器,但IE.
IE是否有任何其他非标准机制?(与许多其他功能一样)
如果没有,是否有任何变通方法可以实现相同的功能?
IE8完成了它defineProperty
,但仅限于DOM对象.但据推测,它最终也会出现在JavaScript对象中.
Resig的帖子引用了他的env.js实现,这是他第一次使用你正在寻找的getter和setter方法.这种风格适合他的原因是因为它们没有在基于浏览器的环境中使用,env.js主要专注于服务器端JS或Rhino等脚本环境.
要处理浏览器兼容性以及关注JavaScript做得很好的方面,请使用getter和setter方法的闭包来保护对象属性.
例如:
foo: function(val) {
var bar = val;
this.setBar: function(newBar) {
bar = newBar;
},
this.getBar: function() {
return bar;
}
}
Run Code Online (Sandbox Code Playgroud)
这将导致:
var checkFoo = foo("cool!");
alert(checkFoo.getBar()); //cool!
checkFoo.setBar("nice!");
alert(checkFoo.getBar()); //nice!
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10137 次 |
最近记录: |