Version 1
[yaffs-website] / node_modules / bluebird / js / release / es5.js
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 }