無論出於何種原因,自定義對象的Javascript getters/setters似乎適用於除IE之外的任何瀏覽器。在IE中的Javascript getters/setters?
IE是否有任何其他非標準機制呢? (與許多其他功能一樣)
如果沒有,是否有任何解決方法來實現相同的功能?
無論出於何種原因,自定義對象的Javascript getters/setters似乎適用於除IE之外的任何瀏覽器。在IE中的Javascript getters/setters?
IE是否有任何其他非標準機制呢? (與許多其他功能一樣)
如果沒有,是否有任何解決方法來實現相同的功能?
IE8有它通過defineProperty
,但只適用於DOM對象。但據推測,它最終也會用於JavaScript對象。
最終?S o我們將在IE 10中看到它? ;) – 2009-07-02 23:07:22
有趣的 - 我不知道這已被添加! @musicfreak:你和你的陽光樂觀...... – Shog9 2009-07-02 23:10:07
Resig的帖子引用了他的env.js實現,這是他第一次使用你正在尋找的getters和setters方法。這種風格的工作原因是因爲他們沒有在基於瀏覽器的環境中使用,env.js主要專注於服務器端JS或Rhino等腳本環境。
爲了處理瀏覽器的兼容性以及關注JavaScript很好的一個方面,請使用閉包來獲取getter和setter方法來保護對象的屬性。
例如:
foo: function(val) {
var bar = val;
this.setBar: function(newBar) {
bar = newBar;
},
this.getBar: function() {
return bar;
}
}
這將導致:
var checkFoo = foo("cool!");
alert(checkFoo.getBar()); //cool!
checkFoo.setBar("nice!");
alert(checkFoo.getBar()); //nice!
一種用於IE6 +溶液是可用的使用onpropertychange事件和新規範defineProperty。小問題是你需要將你的變量變成一個dom對象。
全部細節:
http://johndyer.name/native-browser-get-set-properties-in-javascript/
對於老的IE瀏覽器,你也可以使用VB模擬getter和setter 看看這個 getters & setters for all IE with cross browser VBClass!
IE9和IE10現在支持這一點:HTTP: //kangax.github.com/es5-compat-table/ – 2012-05-30 15:59:06
它們支持對象文字,但不支持IE中的對象原型:(http://robertnyman.com/javascript/javascript-getters-setters.html #regular-getters-and-setters – roguenet 2013-01-15 19:21:34