Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
81160 views
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
}
81
82