1 var isES5 = (function(){
3 return this === undefined;
9 defineProperty: Object.defineProperty,
10 getDescriptor: Object.getOwnPropertyDescriptor,
12 names: Object.getOwnPropertyNames,
13 getPrototypeOf: Object.getPrototypeOf,
14 isArray: Array.isArray,
16 propertyIsWritable: function(obj, prop) {
17 var descriptor = Object.getOwnPropertyDescriptor(obj, prop);
18 return !!(!descriptor || descriptor.writable || descriptor.set);
22 var has = {}.hasOwnProperty;
23 var str = {}.toString;
24 var proto = {}.constructor.prototype;
26 var ObjectKeys = function (o) {
29 if (has.call(o, key)) {
36 var ObjectGetDescriptor = function(o, key) {
37 return {value: o[key]};
40 var ObjectDefineProperty = function (o, key, desc) {
45 var ObjectFreeze = function (obj) {
49 var ObjectGetPrototypeOf = function (obj) {
51 return Object(obj).constructor.prototype;
58 var ArrayIsArray = function (obj) {
60 return str.call(obj) === "[object Array]";
68 isArray: ArrayIsArray,
71 defineProperty: ObjectDefineProperty,
72 getDescriptor: ObjectGetDescriptor,
74 getPrototypeOf: ObjectGetPrototypeOf,
76 propertyIsWritable: function() {