UNPKG

extendscript-es5-shim

Version:
54 lines (47 loc) 1.97 kB
if (!Object.create) { // Production steps of ECMA-262, Edition 5, 15.2.3.5 // Reference: http://es5.github.io/#x15.2.3.5 Object.create = (function() { // To save on memory, use a shared constructor function Temp() {} // make a safe reference to Object.prototype.hasOwnProperty var hasOwn = Object.prototype.hasOwnProperty; return function(O) { // 1. If Type(O) is not Object or Null throw a TypeError exception. if (Object(O) !== O && O !== null) { throw TypeError('Object prototype may only be an Object or null'); } // 2. Let obj be the result of creating a new object as if by the // expression new Object() where Object is the standard built-in // constructor with that name // 3. Set the [[Prototype]] internal property of obj to O. Temp.prototype = O; var obj = new Temp(); Temp.prototype = null; // Let's not keep a stray reference to O... // 4. If the argument Properties is present and not undefined, add // own properties to obj as if by calling the standard built-in // function Object.defineProperties with arguments obj and // Properties. if (arguments.length > 1) { // Object.defineProperties does ToObject on its first argument. var Properties = Object(arguments[1]); for (var prop in Properties) { if (hasOwn.call(Properties, prop)) { var descriptor = Properties[prop]; if (Object(descriptor) !== descriptor) { throw TypeError(prop + 'must be an object'); } if ('get' in descriptor || 'set' in descriptor) { throw new TypeError('getters & setters can not be defined on this javascript engine'); } if ('value' in descriptor) { obj[prop] = Properties[prop].value; } } } } // 5. Return obj return obj; }; })(); }