You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
823 B
32 lines
823 B
'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;
|
|
|