mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-11 03:17:49 +00:00
Simplify support property detection.
This commit is contained in:
@@ -852,8 +852,6 @@
|
|||||||
|
|
||||||
Ctor.prototype = { 'valueOf': 1, 'y': 1 };
|
Ctor.prototype = { 'valueOf': 1, 'y': 1 };
|
||||||
for (var key in new Ctor) { props.push(key); }
|
for (var key in new Ctor) { props.push(key); }
|
||||||
for (var argsKey in arguments) {}
|
|
||||||
for (var strKey in 'x') {}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Detect if the `[[Class]]` of `arguments` objects is resolvable
|
* Detect if the `[[Class]]` of `arguments` objects is resolvable
|
||||||
@@ -912,7 +910,7 @@
|
|||||||
* @memberOf _.support
|
* @memberOf _.support
|
||||||
* @type boolean
|
* @type boolean
|
||||||
*/
|
*/
|
||||||
support.nonEnumStrings = strKey != '0';
|
support.nonEnumStrings = !propertyIsEnumerable.call('x', 0);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Detect if properties shadowing those on `Object.prototype` are
|
* Detect if properties shadowing those on `Object.prototype` are
|
||||||
@@ -1001,7 +999,7 @@
|
|||||||
* @type boolean
|
* @type boolean
|
||||||
*/
|
*/
|
||||||
try {
|
try {
|
||||||
support.nonEnumArgs = !(hasOwnProperty.call(arguments, 1) && propertyIsEnumerable.call(arguments, 1));
|
support.nonEnumArgs = !propertyIsEnumerable.call(arguments, 1);
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
support.nonEnumArgs = true;
|
support.nonEnumArgs = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -100,19 +100,16 @@
|
|||||||
setProperty(Object, '_keys', Object.keys);
|
setProperty(Object, '_keys', Object.keys);
|
||||||
setProperty(Object, 'keys', noop);
|
setProperty(Object, 'keys', noop);
|
||||||
|
|
||||||
setProperty(objectProto, 'hasOwnProperty', (function() {
|
setProperty(objectProto, '_propertyIsEnumerable', propertyIsEnumerable);
|
||||||
function wrapper(key) {
|
setProperty(objectProto, 'propertyIsEnumerable', function(key) {
|
||||||
if (key == '1' && this && typeof this == 'object' && this.length === 2 &&
|
if (key == '1' && this && typeof this == 'object' && this.length === 2 &&
|
||||||
hasOwnProperty.call(this, 'callee') &&
|
hasOwnProperty.call(this, 'callee') &&
|
||||||
!propertyIsEnumerable.call(this, 'callee') &&
|
!propertyIsEnumerable.call(this, 'callee') &&
|
||||||
this[0] === 0 && this[1] === 0) {
|
this[0] === 0 && this[1] === 0) {
|
||||||
throw new Error;
|
throw new Error;
|
||||||
}
|
|
||||||
return hasOwnProperty.call(this, key);
|
|
||||||
}
|
}
|
||||||
setProperty(objectProto, '_hasOwnProperty', hasOwnProperty);
|
return propertyIsEnumerable.call(this, key);
|
||||||
return wrapper;
|
});
|
||||||
}()));
|
|
||||||
|
|
||||||
setProperty(Number, '_isFinite', Number.isFinite);
|
setProperty(Number, '_isFinite', Number.isFinite);
|
||||||
setProperty(Number, 'isFinite', noop);
|
setProperty(Number, 'isFinite', noop);
|
||||||
@@ -228,7 +225,7 @@
|
|||||||
} else {
|
} else {
|
||||||
delete stringProto.contains;
|
delete stringProto.contains;
|
||||||
}
|
}
|
||||||
setProperty(objectProto, 'hasOwnProperty', objectProto._hasOwnProperty);
|
setProperty(objectProto, 'propertyIsEnumerable', objectProto._propertyIsEnumerable);
|
||||||
|
|
||||||
document.createDocumentFragment = document._createDocumentFragment;
|
document.createDocumentFragment = document._createDocumentFragment;
|
||||||
setProperty(document, '_createDocumentFragment', undefined);
|
setProperty(document, '_createDocumentFragment', undefined);
|
||||||
|
|||||||
@@ -375,8 +375,8 @@
|
|||||||
var _keys = Object.keys;
|
var _keys = Object.keys;
|
||||||
setProperty(Object, 'keys', _.noop);
|
setProperty(Object, 'keys', _.noop);
|
||||||
|
|
||||||
var _hasOwnProperty = objectProto.hasOwnProperty;
|
var _propertyIsEnumerable = objectProto.propertyIsEnumerable;
|
||||||
setProperty(objectProto, 'hasOwnProperty', function(key) {
|
setProperty(objectProto, 'propertyIsEnumerable', function(key) {
|
||||||
if (key == '1' && _.isArguments(this) && _.isEqual(_.values(this), [0, 0])) {
|
if (key == '1' && _.isArguments(this) && _.isEqual(_.values(this), [0, 0])) {
|
||||||
throw new Error;
|
throw new Error;
|
||||||
}
|
}
|
||||||
@@ -463,7 +463,7 @@
|
|||||||
setProperty(Object, 'getPrototypeOf', _getPrototypeOf);
|
setProperty(Object, 'getPrototypeOf', _getPrototypeOf);
|
||||||
setProperty(Object, 'keys', _keys);
|
setProperty(Object, 'keys', _keys);
|
||||||
|
|
||||||
setProperty(objectProto, 'hasOwnProperty', _hasOwnProperty);
|
setProperty(objectProto, 'propertyIsEnumerable', _propertyIsEnumerable);
|
||||||
setProperty(root, 'parseInt', _parseInt);
|
setProperty(root, 'parseInt', _parseInt);
|
||||||
|
|
||||||
if (_isFinite) {
|
if (_isFinite) {
|
||||||
|
|||||||
Reference in New Issue
Block a user