현재 ES5의 새로운 기능을 기반으로하는 JavaScript API를 작성 중입니다. 그것은 광범위하게 Object.defineProperty
을 사용합니다.Object.defineProperty polyfill
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
});
}
};
: 나는 그러나 다음 코드를 고려 (예 : 두려워, IE8로) 이전 버전의 브라우저에서이 작업을 실행하는 데 문제
을 경험하고 Object.createGetSetProperty
및 Object.createValueProperty
나는 두 가지 새로운 기능으로이 포장 불렀다
보시다시피, Object.createValueProperty 아래에 우아한 fallback이 있지만 Object.createGetSetProperty를 사용하여 정상적으로 폴백하는 방법을 알지 못합니다.
누구에게도 해결책이 무엇인지, shims, polyfills에 대해 알고 있습니까?
https://github.com/kriskowal/es5-shim – kangax
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperties, 끝에 폴리 폴리을 설명합니다. 페이지의 –