IE中的Javascript getters/setters?

OB *_* OB 20 javascript getter setter internet-explorer incompatibility

无论出于何种原因,自定义对象的Javascript getters/setter似乎适用于任何浏览器,但IE.

IE是否有任何其他非标准机制?(与许多其他功能一样)

如果没有,是否有任何变通方法可以实现相同的功能?

Nos*_*dna 8

IE8完成了它defineProperty,但仅限于DOM对象.但据推测,它最终也会出现在JavaScript对象中.

  • 我们可能会在IE10中看到它,但我们仍然会编写IE6代码. (27认同)
  • 最后?所以我们会在IE 10中看到它?;) (4认同)

lin*_*3rd 5

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)

  • 3年后,这仍是一个好建议吗?看看这个兼容性表似乎支持即更好:http://kangax.github.com/es5-compat-table/ (3认同)