root / HServer / 00.Server / 00.Program / node_modules / object-keys / shim.js
이력 | 보기 | 이력해설 | 다운로드 (1.51 KB)
| 1 |
(function () {
|
|---|---|
| 2 |
"use strict";
|
| 3 |
|
| 4 |
// modified from https://github.com/kriskowal/es5-shim
|
| 5 |
var has = Object.prototype.hasOwnProperty,
|
| 6 |
toString = Object.prototype.toString, |
| 7 |
forEach = require('./foreach'),
|
| 8 |
isArgs = require('./isArguments'),
|
| 9 |
hasDontEnumBug = !({'toString': null}).propertyIsEnumerable('toString'),
|
| 10 |
hasProtoEnumBug = (function () {}).propertyIsEnumerable('prototype'), |
| 11 |
dontEnums = [ |
| 12 |
"toString",
|
| 13 |
"toLocaleString",
|
| 14 |
"valueOf",
|
| 15 |
"hasOwnProperty",
|
| 16 |
"isPrototypeOf",
|
| 17 |
"propertyIsEnumerable",
|
| 18 |
"constructor"
|
| 19 |
], |
| 20 |
keysShim; |
| 21 |
|
| 22 |
keysShim = function keys(object) { |
| 23 |
var isObject = object !== null && typeof object === 'object', |
| 24 |
isFunction = toString.call(object) === '[object Function]',
|
| 25 |
isArguments = isArgs(object), |
| 26 |
theKeys = []; |
| 27 |
|
| 28 |
if (!isObject && !isFunction && !isArguments) {
|
| 29 |
throw new TypeError("Object.keys called on a non-object"); |
| 30 |
} |
| 31 |
|
| 32 |
if (isArguments) {
|
| 33 |
forEach(object, function (value) {
|
| 34 |
theKeys.push(value); |
| 35 |
}); |
| 36 |
} else {
|
| 37 |
var name,
|
| 38 |
skipProto = hasProtoEnumBug && isFunction; |
| 39 |
|
| 40 |
for (name in object) { |
| 41 |
if (!(skipProto && name === 'prototype') && has.call(object, name)) { |
| 42 |
theKeys.push(name); |
| 43 |
} |
| 44 |
} |
| 45 |
} |
| 46 |
|
| 47 |
if (hasDontEnumBug) {
|
| 48 |
var ctor = object.constructor,
|
| 49 |
skipConstructor = ctor && ctor.prototype === object; |
| 50 |
|
| 51 |
forEach(dontEnums, function (dontEnum) {
|
| 52 |
if (!(skipConstructor && dontEnum === 'constructor') && has.call(object, dontEnum)) { |
| 53 |
theKeys.push(dontEnum); |
| 54 |
} |
| 55 |
}); |
| 56 |
} |
| 57 |
return theKeys;
|
| 58 |
}; |
| 59 |
|
| 60 |
module.exports = keysShim; |
| 61 |
}()); |
| 62 |
|