我目前正在编写一个基于ES5新功能的JavaScript API.它使用Object.defineProperty相当广泛.我把它包装成两个新的函数,叫做Object.createGetSetProperty和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: …Run Code Online (Sandbox Code Playgroud)