以下に示すように Object.defineProperty について尋ねます。
function testComponent(){
var testProperty;
Object.defineProperty(this, "testProperty",
{
get : function()
{
return testProperty;
},
set : function(val)
{
testProperty = val;
}
});
}
次のように使用されます。
testObject = new testComponent();
testObject.testProperty = "testValue";
私がこれまでに見たものに基づいて、運がなかったes5-shimを使用しようとしたため、クロス ブラウザー ソリューションがないように見えますが、確認したいと思います。この投稿への参照も見つけましたが、私のテストは IE 7 & 8 でも失敗します。
数か月前に S/O のどこかで関連する質問を調べたのを覚えています。誰かが回答でこれに対する解決策を書いているのを見たと思います。ゲッター/セッターの一般的な回避策もいただければ幸いです。アイデアは、メソッドを介してパラメーターの変更を渡すことなく、オブジェクトのゲッター セッターに相当するものを必要とするということです。IE6 は必要ありませんが、IE7+ ff 3.6+ などの範囲のブラウザーをサポートしたいと考えています。
以下の QUnit テスト: ( jsFiddles )
(これらは、IE 7 と 8 を除く、私のマシンのすべてのブラウザーで通過します。
defineProperty の直接使用、シムなし:
http://jsfiddle.net/uSYFE/
ES5シムを使用してフィドルします。私がする必要があるのはそれを含めることだけだと思いますか? :
http://jsfiddle.net/hyperthalamus/ntwDy/
IE推奨ソリューションを使用してフィドル:
http://jsfiddle.net/hyperthalamus/xfvz3/