| [9af201e] | 1 | var isES5 = (function(){
|
|---|
| 2 | "use strict";
|
|---|
| 3 | return this === undefined;
|
|---|
| 4 | })();
|
|---|
| 5 |
|
|---|
| 6 | if (isES5) {
|
|---|
| 7 | module.exports = {
|
|---|
| 8 | freeze: Object.freeze,
|
|---|
| 9 | defineProperty: Object.defineProperty,
|
|---|
| 10 | getDescriptor: Object.getOwnPropertyDescriptor,
|
|---|
| 11 | keys: Object.keys,
|
|---|
| 12 | names: Object.getOwnPropertyNames,
|
|---|
| 13 | getPrototypeOf: Object.getPrototypeOf,
|
|---|
| 14 | isArray: Array.isArray,
|
|---|
| 15 | isES5: isES5,
|
|---|
| 16 | propertyIsWritable: function(obj, prop) {
|
|---|
| 17 | var descriptor = Object.getOwnPropertyDescriptor(obj, prop);
|
|---|
| 18 | return !!(!descriptor || descriptor.writable || descriptor.set);
|
|---|
| 19 | }
|
|---|
| 20 | };
|
|---|
| 21 | } else {
|
|---|
| 22 | var has = {}.hasOwnProperty;
|
|---|
| 23 | var str = {}.toString;
|
|---|
| 24 | var proto = {}.constructor.prototype;
|
|---|
| 25 |
|
|---|
| 26 | var ObjectKeys = function (o) {
|
|---|
| 27 | var ret = [];
|
|---|
| 28 | for (var key in o) {
|
|---|
| 29 | if (has.call(o, key)) {
|
|---|
| 30 | ret.push(key);
|
|---|
| 31 | }
|
|---|
| 32 | }
|
|---|
| 33 | return ret;
|
|---|
| 34 | };
|
|---|
| 35 |
|
|---|
| 36 | var ObjectGetDescriptor = function(o, key) {
|
|---|
| 37 | return {value: o[key]};
|
|---|
| 38 | };
|
|---|
| 39 |
|
|---|
| 40 | var ObjectDefineProperty = function (o, key, desc) {
|
|---|
| 41 | o[key] = desc.value;
|
|---|
| 42 | return o;
|
|---|
| 43 | };
|
|---|
| 44 |
|
|---|
| 45 | var ObjectFreeze = function (obj) {
|
|---|
| 46 | return obj;
|
|---|
| 47 | };
|
|---|
| 48 |
|
|---|
| 49 | var ObjectGetPrototypeOf = function (obj) {
|
|---|
| 50 | try {
|
|---|
| 51 | return Object(obj).constructor.prototype;
|
|---|
| 52 | }
|
|---|
| 53 | catch (e) {
|
|---|
| 54 | return proto;
|
|---|
| 55 | }
|
|---|
| 56 | };
|
|---|
| 57 |
|
|---|
| 58 | var ArrayIsArray = function (obj) {
|
|---|
| 59 | try {
|
|---|
| 60 | return str.call(obj) === "[object Array]";
|
|---|
| 61 | }
|
|---|
| 62 | catch(e) {
|
|---|
| 63 | return false;
|
|---|
| 64 | }
|
|---|
| 65 | };
|
|---|
| 66 |
|
|---|
| 67 | module.exports = {
|
|---|
| 68 | isArray: ArrayIsArray,
|
|---|
| 69 | keys: ObjectKeys,
|
|---|
| 70 | names: ObjectKeys,
|
|---|
| 71 | defineProperty: ObjectDefineProperty,
|
|---|
| 72 | getDescriptor: ObjectGetDescriptor,
|
|---|
| 73 | freeze: ObjectFreeze,
|
|---|
| 74 | getPrototypeOf: ObjectGetPrototypeOf,
|
|---|
| 75 | isES5: isES5,
|
|---|
| 76 | propertyIsWritable: function() {
|
|---|
| 77 | return true;
|
|---|
| 78 | }
|
|---|
| 79 | };
|
|---|
| 80 | }
|
|---|