|
|
- 'use strict';
-
- var slice = Array.prototype.slice;
- var isArgs = require('./isArguments');
-
- var origKeys = Object.keys;
- var keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');
-
- var originalKeys = Object.keys;
-
- keysShim.shim = function shimObjectKeys() {
- if (Object.keys) {
- var keysWorksWithArguments = (function () {
- // Safari 5.0 bug
- var args = Object.keys(arguments);
- return args && args.length === arguments.length;
- }(1, 2));
- if (!keysWorksWithArguments) {
- Object.keys = function keys(object) { // eslint-disable-line func-name-matching
- if (isArgs(object)) {
- return originalKeys(slice.call(object));
- }
- return originalKeys(object);
- };
- }
- } else {
- Object.keys = keysShim;
- }
- return Object.keys || keysShim;
- };
-
- module.exports = keysShim;
|