私は現在、ES5 の新機能に基づいた JavaScript API を作成しています。それはObject.defineProperty
かなり広範囲に使用されます。Object.createGetSetProperty
これをとという 2 つの新しい関数にラップしました。Object.createValueProperty
ただし、これを古いブラウザー (恐ろしい IE8 など) で実行すると問題が発生します。
次のコードを検討してください。
Object.createGetSetProperty = function (object, property, get, set, enumerable, configurable) {
if (!Object.defineProperty) throw new Error("Object.defineProperty is not supported on this platform");
Object.defineProperty(object, property, {
get: get,
set: set,
enumerable: enumerable || true,
configurable: configurable || false
});
};
Object.createValueProperty = function (object, property, value, enumerable, configurable, writable) {
if (!Object.defineProperty) {
object[property] = value;
} else {
Object.defineProperty(object, property, {
value: value,
enumerable: enumerable || true,
configurable: configurable || false,
writable: writable || false
});
}
};
ご覧のとおり、Object.createValueProperty の下に適切なフォールバックがありますが、Object.createGetSetProperty で適切にフォールバックする方法がわかりません。
これに対する解決策、シム、ポリフィルを知っている人はいますか?