このコードを見つけたとき、JavaScriptのゲッターとセッターに関するJohnResigの記事を読んでいました。
function Field(val){
this._value = val;
}
Field.prototype = {
get value(){
return this._value;
},
set value(val){
this._value = val;
}
};
私はテストしましたが、SCRIPT1003: ':' expected
エラーが発生する気の利いたIEを除いて、すべての主要なブラウザーで完全に動作します。しばらく疑問に思ったのですが、IEがJavaScriptのゲッターとセッターを認識しないためにこのエラーが発生することに気づきました。これは構文エラーだget value
と思います。set value
このコードをクロスブラウザにする方法はありますか?
前もって感謝します
編集:
また、ブラウザがゲッターとセッターをサポートしているかどうかを確認しようとしました。
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;
}
};
}
get
ただし、コードを実行する前に、IEは構文エラーをチェックし、および行でこれらのエラーを誤って検出しset
ます。