当我发现这段代码时,我正在阅读John Resig关于 JavaScript Getters 和 Setters 的文章:
function Field(val){
this._value = val;
}
Field.prototype = {
get value(){
return this._value;
},
set value(val){
this._value = val;
}
};
我已经测试过了,它可以在所有主流浏览器上完美运行,除了该死的 IE,它给了我SCRIPT1003: ':' expected
错误。琢磨了一会儿,我意识到这个错误的发生是因为 IE 无法识别 JavaScript Getters 和 Setters,所以我认为这get value
是set value
一个语法错误。
有没有办法让这段代码跨浏览器?
提前致谢
编辑:
我还尝试检查浏览器是否支持 getters&setters:
if(window.__lookupSetter){
Field.prototype = {
get value(){
return this._value;
},
set value(val){
this._value = val;
}
};
}else{
Field.prototype = {
value: function(val){
if(val)
return this._value = val;
return this._value;
}
};
}
但是在执行代码之前,IE 会检查语法错误,并在get
andset
行中错误地发现这些错误。