Move lodash instance check up in lodash function and tweak chaining benchmark.

Former-commit-id: 799ae05e5180ee87bb2a5249be3e442ed0425ef7
This commit is contained in:
John-David Dalton
2013-03-04 01:40:55 -08:00
parent 9f19c302d8
commit 35bd7c55d0
9 changed files with 24 additions and 24 deletions

View File

@@ -2017,12 +2017,12 @@
// replace `lodash`
source = replaceFunction(source, 'lodash', [
'function lodash(value) {',
' if (value instanceof lodash) {',
' return value;',
' }',
' if (!(this instanceof lodash)) {',
' return new lodash(value);',
' }',
' if (value instanceof lodash) {',
' return value;',
' }',
' this.__wrapped__ = value;',
'}'
].join('\n'));

View File

@@ -320,14 +320,14 @@
* @returns {Object} Returns a `lodash` instance.
*/
function lodash(value) {
// exit early if already wrapped, even if wrapped by a different `lodash` constructor
if (value && typeof value == 'object' && hasOwnProperty.call(value, '__wrapped__')) {
return value;
}
// allow invoking `lodash` without the `new` operator
if (!(this instanceof lodash)) {
return new lodash(value);
}
// exit early if already wrapped, even if wrapped by a different `lodash` constructor
if (value && typeof value == 'object' && hasOwnProperty.call(value, '__wrapped__')) {
return value;
}
this.__wrapped__ = value;
}

View File

@@ -4,7 +4,7 @@
* Build: `lodash -o ./dist/lodash.compat.js`
* Underscore.js 1.4.4 underscorejs.org/LICENSE
*/
;(function(n){function t(r){function a(n){return n&&typeof n=="object"&&Jt.call(n,"__wrapped__")?n:this instanceof a?(this.__wrapped__=n,void 0):new a(n)}function q(n,t,e){t||(t=0);var r=n.length,u=r-t>=(e||f);if(u){var a={};for(e=t-1;++e<r;){var o=n[e]+"";(Jt.call(a,o)?a[o]:a[o]=[]).push(n[e])}}return function(e){if(u){var r=e+"";return Jt.call(a,r)&&-1<mt(a[r],e)}return-1<mt(n,e,t)}}function B(n){return n.charCodeAt(0)}function R(n,t){var e=n.b,r=t.b;if(n=n.a,t=t.a,n!==t){if(n>t||typeof n=="undefined")return 1;
;(function(n){function t(r){function a(n){return this instanceof a?n&&typeof n=="object"&&Jt.call(n,"__wrapped__")?n:(this.__wrapped__=n,void 0):new a(n)}function q(n,t,e){t||(t=0);var r=n.length,u=r-t>=(e||f);if(u){var a={};for(e=t-1;++e<r;){var o=n[e]+"";(Jt.call(a,o)?a[o]:a[o]=[]).push(n[e])}}return function(e){if(u){var r=e+"";return Jt.call(a,r)&&-1<mt(a[r],e)}return-1<mt(n,e,t)}}function B(n){return n.charCodeAt(0)}function R(n,t){var e=n.b,r=t.b;if(n=n.a,t=t.a,n!==t){if(n>t||typeof n=="undefined")return 1;
if(n<t||typeof t=="undefined")return-1}return e<r?-1:1}function T(n,t,e,r){function u(){var f=arguments,c=o?this:t;return a||(n=t[i]),e.length&&(f=f.length?(f=U(f),r?f.concat(e):e.concat(f)):e),this instanceof u?(c=Ce(n.prototype),f=n.apply(c,f),nt(f)?f:c):n.apply(c,f)}var a=Z(n),o=!e,i=t;return o&&(e=t),a||(t=n),u}function D(){for(var n,t={e:St,f:Et,g:ve,i:he,j:de,k:_,b:"k(m)",c:"",h:"",l:"",m:!0},e=0;n=arguments[e];e++)for(var r in n)t[r]=n[r];if(n=t.a,t.d=/^[^,]+/.exec(n)[0],e=Ft,r="var i,m="+t.d+",u=m;if(!m)return u;"+t.l+";",t.b?(r+="var n=m.length;i=-1;if("+t.b+"){",t.j&&(r+="if(l(m)){m=m.split('')}"),r+="while(++i<n){"+t.h+"}}else{"):t.i&&(r+="var n=m.length;i=-1;if(n&&j(m)){while(++i<n){i+='';"+t.h+"}}else{"),t.f&&(r+="var v=typeof m=='function';"),t.g&&t.m?(r+="var s=-1,t=r[typeof m]?p(m):[],n=t.length;while(++s<n){i=t[s];",t.f&&(r+="if(!(v&&i=='prototype')){"),r+=t.h+"",t.f&&(r+="}")):(r+="for(i in m){",(t.f||t.m)&&(r+="if(",t.f&&(r+="!(v&&i=='prototype')"),t.f&&t.m&&(r+="&&"),t.m&&(r+="h.call(m,i)"),r+="){"),r+=t.h+";",(t.f||t.m)&&(r+="}")),r+="}",t.e){r+="var f=m.constructor;";
for(var u=0;7>u;u++)r+="i='"+t.k[u]+"';if(","constructor"==t.k[u]&&(r+="!(f&&f.prototype===m)&&"),r+="h.call(m,i)){"+t.h+"}"}return(t.b||t.i)&&(r+="}"),r+=t.c+";return u",e("h,j,k,l,o,r,p","return function("+n+"){"+r+"}")(Jt,G,Ie,et,a,A,ue)}function P(n){var t=Ce(a.prototype);return t.__wrapped__=n,t}function z(n){return"\\"+$[n]}function M(n){return Ae[n]}function K(n){return typeof n.toString!="function"&&typeof(n+"")=="string"}function L(){}function U(n,t,e){t||(t=0),typeof e=="undefined"&&(e=n?n.length:0);
var r=-1;e=e-t||0;for(var u=Nt(0>e?0:e);++r<e;)u[r]=n[t+r];return u}function V(n){return $e[n]}function G(n){return Yt.call(n)==k}function H(n){var t=!1;if(!n||typeof n!="object"||G(n))return t;var e=n.constructor;return!Z(e)&&(!be||!K(n))||e instanceof e?It?(Se(n,function(n,e,r){return t=!Jt.call(r,e),!1}),!1===t):(Se(n,function(n,e){t=e}),!1===t||Jt.call(n,t)):t}function J(n){var t=[];return Ee(n,function(n,e){t.push(e)}),t}function Q(n,t,r,u,o,i){var f=n;if(typeof t=="function"&&(u=r,r=t,t=!1),typeof r=="function"){if(r=typeof u=="undefined"?r:a.createCallback(r,u,1),f=r(f),typeof f!="undefined")return f;

8
dist/lodash.js vendored
View File

@@ -242,14 +242,14 @@
* @returns {Object} Returns a `lodash` instance.
*/
function lodash(value) {
// exit early if already wrapped, even if wrapped by a different `lodash` constructor
if (value && typeof value == 'object' && hasOwnProperty.call(value, '__wrapped__')) {
return value;
}
// allow invoking `lodash` without the `new` operator
if (!(this instanceof lodash)) {
return new lodash(value);
}
// exit early if already wrapped, even if wrapped by a different `lodash` constructor
if (value && typeof value == 'object' && hasOwnProperty.call(value, '__wrapped__')) {
return value;
}
this.__wrapped__ = value;
}

2
dist/lodash.min.js vendored
View File

@@ -4,7 +4,7 @@
* Build: `lodash modern -o ./dist/lodash.js`
* Underscore.js 1.4.4 underscorejs.org/LICENSE
*/
;(function(n){function t(r){function a(n){return n&&typeof n=="object"&&Mt.call(n,"__wrapped__")?n:this instanceof a?(this.__wrapped__=n,void 0):new a(n)}function $(n,t,e){t||(t=0);var r=n.length,u=r-t>=(e||f);if(u){var a={};for(e=t-1;++e<r;){var o=n[e]+"";(Mt.call(a,o)?a[o]:a[o]=[]).push(n[e])}}return function(e){if(u){var r=e+"";return Mt.call(a,r)&&-1<vt(a[r],e)}return-1<vt(n,e,t)}}function F(n){return n.charCodeAt(0)}function q(n,t){var e=n.b,r=t.b;if(n=n.a,t=t.a,n!==t){if(n>t||typeof n=="undefined")return 1;
;(function(n){function t(r){function a(n){return this instanceof a?n&&typeof n=="object"&&Mt.call(n,"__wrapped__")?n:(this.__wrapped__=n,void 0):new a(n)}function $(n,t,e){t||(t=0);var r=n.length,u=r-t>=(e||f);if(u){var a={};for(e=t-1;++e<r;){var o=n[e]+"";(Mt.call(a,o)?a[o]:a[o]=[]).push(n[e])}}return function(e){if(u){var r=e+"";return Mt.call(a,r)&&-1<vt(a[r],e)}return-1<vt(n,e,t)}}function F(n){return n.charCodeAt(0)}function q(n,t){var e=n.b,r=t.b;if(n=n.a,t=t.a,n!==t){if(n>t||typeof n=="undefined")return 1;
if(n<t||typeof t=="undefined")return-1}return e<r?-1:1}function B(n,t,e,r){function u(){var f=arguments,c=o?this:t;return a||(n=t[i]),e.length&&(f=f.length?(f=M(f),r?f.concat(e):e.concat(f)):e),this instanceof u?(c=pe(n.prototype),f=n.apply(c,f),W(f)?f:c):n.apply(c,f)}var a=Q(n),o=!e,i=t;return o&&(e=t),a||(t=n),u}function R(){for(var n,t={g:oe,b:"k(m)",c:"",h:"",l:"",m:!0},e=0;n=arguments[e];e++)for(var r in n)t[r]=n[r];return n=t.a,t.d=/^[^,]+/.exec(n)[0],e=Ot,r="var i,m="+t.d+",u=m;if(!m)return u;"+t.l+";",t.b&&(r+="var n=m.length;i=-1;if("+t.b+"){while(++i<n){"+t.h+"}}else{"),t.g&&t.m?r+="var s=-1,t=r[typeof m]?p(m):[],n=t.length;while(++s<n){i=t[s];"+t.h+"}":(r+="for(i in m){",t.m&&(r+="if(",t.m&&(r+="h.call(m,i)"),r+="){"),r+=t.h+";",t.m&&(r+="}"),r+="}"),t.b&&(r+="}"),r+=t.c+";return u",e("h,j,k,l,o,r,p","return function("+n+"){"+r+"}")(Mt,U,he,Y,a,A,Xt)
}function T(n){var t=pe(a.prototype);return t.__wrapped__=n,t}function D(n){return"\\"+E[n]}function z(n){return me[n]}function P(){}function M(n,t,e){t||(t=0),typeof e=="undefined"&&(e=n?n.length:0);var r=-1;e=e-t||0;for(var u=wt(0>e?0:e);++r<e;)u[r]=n[t+r];return u}function K(n){return be[n]}function U(n){return Gt.call(n)==_}function V(n){var t=[];return ge(n,function(n,e){t.push(e)}),t}function G(n,t,r,u,o,i){var f=n;if(typeof t=="function"&&(u=r,r=t,t=!1),typeof r=="function"){if(r=typeof u=="undefined"?r:a.createCallback(r,u,1),f=r(f),typeof f!="undefined")return f;
f=n}if(u=W(f)){var c=Gt.call(f);if(!S[c])return f;var l=he(f)}if(!u||!t)return u?l?M(f):de({},f):f;switch(u=ie[c],c){case j:case w:return new u(+f);case C:case N:return new u(f);case O:return u(f.source,v.exec(f))}for(o||(o=[]),i||(i=[]),c=o.length;c--;)if(o[c]==n)return i[c];return f=l?u(f.length):{},l&&(Mt.call(n,"index")&&(f.index=n.index),Mt.call(n,"input")&&(f.input=n.input)),o.push(n),i.push(f),(l?at:ge)(n,function(n,u){f[u]=G(n,t,r,e,o,i)}),f}function H(n){var t=[];return ve(n,function(n,e){Q(n)&&t.push(e)

View File

@@ -196,12 +196,12 @@
* @returns {Object} Returns a `lodash` instance.
*/
function lodash(value) {
if (value instanceof lodash) {
return value;
}
if (!(this instanceof lodash)) {
return new lodash(value);
}
if (value instanceof lodash) {
return value;
}
this.__wrapped__ = value;
}

View File

@@ -4,7 +4,7 @@
* Build: `lodash underscore -o ./dist/lodash.underscore.js`
* Underscore.js 1.4.4 underscorejs.org/LICENSE
*/
;(function(n){function r(n,r){var t;if(n&&pr[typeof n])for(t in r||(r=V),n)if(r(n[t],t,n)===Y)break}function t(n,r,t){if(n){r=r&&typeof t=="undefined"?r:U(r,t);var e=n.length;if(t=-1,typeof e=="number")for(;++t<e&&r(n[t],t,n)!==Y;);else for(t in n)if(br.call(n,t)&&r(n[t],t,n)===Y)break}}function e(n){return n instanceof e?n:this instanceof e?(this.__wrapped__=n,void 0):new e(n)}function u(n,r){var t=n.b,e=r.b;if(n=n.a,r=r.a,n!==r){if(n>r||typeof n=="undefined")return 1;if(n<r||typeof r=="undefined")return-1
;(function(n){function r(n,r){var t;if(n&&pr[typeof n])for(t in r||(r=V),n)if(r(n[t],t,n)===Y)break}function t(n,r,t){if(n){r=r&&typeof t=="undefined"?r:U(r,t);var e=n.length;if(t=-1,typeof e=="number")for(;++t<e&&r(n[t],t,n)!==Y;);else for(t in n)if(br.call(n,t)&&r(n[t],t,n)===Y)break}}function e(n){return this instanceof e?n instanceof e?n:(this.__wrapped__=n,void 0):new e(n)}function u(n,r){var t=n.b,e=r.b;if(n=n.a,r=r.a,n!==r){if(n>r||typeof n=="undefined")return 1;if(n<r||typeof r=="undefined")return-1
}return t<e?-1:1}function o(n,r,t){function e(){var a=arguments,f=o?this:r;return u||(n=r[i]),t.length&&(a=a.length?(a=c(a),t.concat(a)):t),this instanceof e?(f=$r(n.prototype),a=n.apply(f,a),b(a)?a:f):n.apply(f,a)}var u=d(n),o=!t,i=r;return o&&(t=r),u||(r=n),e}function i(n){return"\\"+sr[n]}function a(n){return zr[n]}function f(){}function c(n,r,t){r||(r=0),typeof t=="undefined"&&(t=n?n.length:0);var e=-1;t=t-r||0;for(var u=Array(0>t?0:t);++e<t;)u[e]=n[r+e];return u}function l(n){return Cr[n]}function p(n){return Ar.call(n)==er
}function s(n){var r,t=[],e=function(n,r){t.push(r)};if(n&&pr[typeof n])for(r in e||(e=V),n)if(br.call(n,r)&&e(n[r],r,n)===Y)break;return t}function v(n){if(!n)return n;for(var r=1,t=arguments.length;r<t;r++){var e=arguments[r];if(e)for(var u in e)n[u]=e[u]}return n}function h(n){if(!n)return n;for(var r=1,t=arguments.length;r<t;r++){var e=arguments[r];if(e)for(var u in e)n[u]==H&&(n[u]=e[u])}return n}function g(n){var t=[];return r(n,function(n,r){d(n)&&t.push(r)}),t.sort()}function y(n){for(var r=-1,t=Tr(n),e=t.length,u={};++r<e;){var o=t[r];
u[n[o]]=o}return u}function m(n){if(!n)return G;if(Ir(n)||w(n))return!n.length;for(var r in n)if(br.call(n,r))return J;return G}function _(n,t,u,o){if(n===t)return 0!==n||1/n==1/t;var i=typeof n,a=typeof t;if(n===n&&(!n||"function"!=i&&"object"!=i)&&(!t||"function"!=a&&"object"!=a))return J;if(n==H||t==H)return n===t;if(a=Ar.call(n),i=Ar.call(t),a!=i)return J;switch(a){case or:case ir:return+n==+t;case ar:return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case cr:case lr:return n==t+""}if(i=a==ur,!i){if(n instanceof e||t instanceof e)return _(n.__wrapped__||n,t.__wrapped__||t,u,o);

View File

@@ -319,14 +319,14 @@
* @returns {Object} Returns a `lodash` instance.
*/
function lodash(value) {
// exit early if already wrapped, even if wrapped by a different `lodash` constructor
if (value && typeof value == 'object' && hasOwnProperty.call(value, '__wrapped__')) {
return value;
}
// allow invoking `lodash` without the `new` operator
if (!(this instanceof lodash)) {
return new lodash(value);
}
// exit early if already wrapped, even if wrapped by a different `lodash` constructor
if (value && typeof value == 'object' && hasOwnProperty.call(value, '__wrapped__')) {
return value;
}
this.__wrapped__ = value;
}

View File

@@ -482,13 +482,13 @@
);
suites.push(
Benchmark.Suite('`_(...).map(...)`')
Benchmark.Suite('`_(...).tap(...)`')
.add(buildName, {
'fn': 'lodashChaining.map(lodash.identity)',
'fn': 'lodashChaining.tap(lodash.identity)',
'teardown': 'function chaining(){}'
})
.add(otherName, {
'fn': '_chaining.map(_.identity)',
'fn': '_chaining.tap(_.identity)',
'teardown': 'function chaining(){}'
})
);