remove defineProperty shim

This commit is contained in:
Fabian Jakobs 2010-12-15 11:10:31 +01:00
commit 523bbba377

View file

@ -37,61 +37,6 @@
define(function(require, exports, module) {
// Narwhal's shim for ES5 defineProperty
// ES5 15.2.3.6
if (!Object.defineProperty) {
Object.defineProperty = function(object, property, descriptor) {
var has = Object.prototype.hasOwnProperty;
if (typeof descriptor == "object" && object.__defineGetter__) {
if (has.call(descriptor, "value")) {
if (!object.__lookupGetter__(property) && !object.__lookupSetter__(property)) {
// data property defined and no pre-existing accessors
object[property] = descriptor.value;
}
if (has.call(descriptor, "get") || has.call(descriptor, "set")) {
// descriptor has a value property but accessor already exists
throw new TypeError("Object doesn't support this action");
}
}
// fail silently if "writable", "enumerable", or "configurable"
// are requested but not supported
/*
// alternate approach:
if ( // can't implement these features; allow false but not true
!(has.call(descriptor, "writable") ? descriptor.writable : true) ||
!(has.call(descriptor, "enumerable") ? descriptor.enumerable : true) ||
!(has.call(descriptor, "configurable") ? descriptor.configurable : true)
)
throw new RangeError(
"This implementation of Object.defineProperty does not " +
"support configurable, enumerable, or writable."
);
*/
else if (typeof descriptor.get == "function") {
object.__defineGetter__(property, descriptor.get);
}
if (typeof descriptor.set == "function") {
object.__defineSetter__(property, descriptor.set);
}
}
return object;
};
}
// ES5 15.2.3.7
if (!Object.defineProperties) {
Object.defineProperties = function(object, properties) {
for (var property in properties) {
if (Object.prototype.hasOwnProperty.call(properties, property)) {
Object.defineProperty(object, property, properties[property]);
}
}
return object;
};
}
/**
* Array detector.
* Firefox 3.5 and Safari 4 have this already. Chrome 4 however ...