@@ -27,7 +27,7 @@ <h1>underscore.js</h1>
2727 < div class ="pilwrap ">
2828 < a class ="pilcrow " href ="#section-1 "> ¶</ a >
2929 </ div >
30- < pre > < code > Underscore.js < span class ="hljs-number "> 1.9</ span > < span class ="hljs-number "> .0 </ span >
30+ < pre > < code > Underscore.js < span class ="hljs-number "> 1.9</ span > < span class ="hljs-number "> .1 </ span >
3131http:< span class ="hljs-comment "> //underscorejs.org</ span >
3232(c) < span class ="hljs-number "> 2009</ span > < span class ="hljs-number "> -2018</ span > Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3333Underscore may be freely distributed under the MIT license.
@@ -222,7 +222,7 @@ <h2 id="baseline-setup">Baseline setup</h2>
222222
223223 </ div >
224224
225- < div class ="content "> < div class ='highlight '> < pre > _.VERSION = < span class ="hljs-string "> '1.9.0 '</ span > ;</ pre > </ div > </ div >
225+ < div class ="content "> < div class ='highlight '> < pre > _.VERSION = < span class ="hljs-string "> '1.9.1 '</ span > ;</ pre > </ div > </ div >
226226
227227 </ li >
228228
@@ -383,6 +383,10 @@ <h2 id="baseline-setup">Baseline setup</h2>
383383 };
384384 };
385385
386+ < span class ="hljs-keyword "> var</ span > has = < span class ="hljs-function "> < span class ="hljs-keyword "> function</ span > (< span class ="hljs-params "> obj, path</ span > ) </ span > {
387+ < span class ="hljs-keyword "> return</ span > obj != < span class ="hljs-literal "> null</ span > && hasOwnProperty.call(obj, path);
388+ }
389+
386390 < span class ="hljs-keyword "> var</ span > deepGet = < span class ="hljs-function "> < span class ="hljs-keyword "> function</ span > (< span class ="hljs-params "> obj, path</ span > ) </ span > {
387391 < span class ="hljs-keyword "> var</ span > length = path.length;
388392 < span class ="hljs-keyword "> for</ span > (< span class ="hljs-keyword "> var</ span > i = < span class ="hljs-number "> 0</ span > ; i < length; i++) {
@@ -991,7 +995,7 @@ <h2 id="collection-functions">Collection Functions</h2>
991995 </ div >
992996
993997 < div class ="content "> < div class ='highlight '> < pre > _.groupBy = group(< span class ="hljs-function "> < span class ="hljs-keyword "> function</ span > (< span class ="hljs-params "> result, value, key</ span > ) </ span > {
994- < span class ="hljs-keyword "> if</ span > (_. has(result, key)) result[key].push(value); < span class ="hljs-keyword "> else</ span > result[key] = [value];
998+ < span class ="hljs-keyword "> if</ span > (has(result, key)) result[key].push(value); < span class ="hljs-keyword "> else</ span > result[key] = [value];
995999 });</ pre > </ div > </ div >
9961000
9971001 </ li >
@@ -1028,7 +1032,7 @@ <h2 id="collection-functions">Collection Functions</h2>
10281032 </ div >
10291033
10301034 < div class ="content "> < div class ='highlight '> < pre > _.countBy = group(< span class ="hljs-function "> < span class ="hljs-keyword "> function</ span > (< span class ="hljs-params "> result, value, key</ span > ) </ span > {
1031- < span class ="hljs-keyword "> if</ span > (_. has(result, key)) result[key]++; < span class ="hljs-keyword "> else</ span > result[key] = < span class ="hljs-number "> 1</ span > ;
1035+ < span class ="hljs-keyword "> if</ span > (has(result, key)) result[key]++; < span class ="hljs-keyword "> else</ span > result[key] = < span class ="hljs-number "> 1</ span > ;
10321036 });
10331037
10341038 < span class ="hljs-keyword "> var</ span > reStrSymbol = < span class ="hljs-regexp "> /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g</ span > ;</ pre > </ div > </ div >
@@ -1147,7 +1151,7 @@ <h2 id="array-functions">Array Functions</h2>
11471151 </ div >
11481152
11491153 < div class ="content "> < div class ='highlight '> < pre > _.first = _.head = _.take = < span class ="hljs-function "> < span class ="hljs-keyword "> function</ span > (< span class ="hljs-params "> array, n, guard</ span > ) </ span > {
1150- < span class ="hljs-keyword "> if</ span > (array == < span class ="hljs-literal "> null</ span > || array.length < < span class ="hljs-number "> 1</ span > ) < span class ="hljs-keyword "> return</ span > < span class ="hljs-keyword "> void</ span > < span class ="hljs-number "> 0</ span > ;
1154+ < span class ="hljs-keyword "> if</ span > (array == < span class ="hljs-literal "> null</ span > || array.length < < span class ="hljs-number "> 1</ span > ) < span class ="hljs-keyword "> return</ span > n == < span class ="hljs-literal " > null </ span > ? < span class =" hljs- keyword "> void</ span > < span class ="hljs-number "> 0</ span > : [] ;
11511155 < span class ="hljs-keyword "> if</ span > (n == < span class ="hljs-literal "> null</ span > || guard) < span class ="hljs-keyword "> return</ span > array[< span class ="hljs-number "> 0</ span > ];
11521156 < span class ="hljs-keyword "> return</ span > _.initial(array, array.length - n);
11531157 };</ pre > </ div > </ div >
@@ -1186,7 +1190,7 @@ <h2 id="array-functions">Array Functions</h2>
11861190 </ div >
11871191
11881192 < div class ="content "> < div class ='highlight '> < pre > _.last = < span class ="hljs-function "> < span class ="hljs-keyword "> function</ span > (< span class ="hljs-params "> array, n, guard</ span > ) </ span > {
1189- < span class ="hljs-keyword "> if</ span > (array == < span class ="hljs-literal "> null</ span > || array.length < < span class ="hljs-number "> 1</ span > ) < span class ="hljs-keyword "> return</ span > < span class ="hljs-keyword "> void</ span > < span class ="hljs-number "> 0</ span > ;
1193+ < span class ="hljs-keyword "> if</ span > (array == < span class ="hljs-literal "> null</ span > || array.length < < span class ="hljs-number "> 1</ span > ) < span class ="hljs-keyword "> return</ span > n == < span class ="hljs-literal " > null </ span > ? < span class =" hljs- keyword "> void</ span > < span class ="hljs-number "> 0</ span > : [] ;
11901194 < span class ="hljs-keyword "> if</ span > (n == < span class ="hljs-literal "> null</ span > || guard) < span class ="hljs-keyword "> return</ span > array[array.length - < span class ="hljs-number "> 1</ span > ];
11911195 < span class ="hljs-keyword "> return</ span > _.rest(array, < span class ="hljs-built_in "> Math</ span > .max(< span class ="hljs-number "> 0</ span > , array.length - n));
11921196 };</ pre > </ div > </ div >
@@ -1812,7 +1816,7 @@ <h2 id="function-ahem-functions">Function (ahem) Functions</h2>
18121816 < span class ="hljs-keyword "> var</ span > memoize = < span class ="hljs-function "> < span class ="hljs-keyword "> function</ span > (< span class ="hljs-params "> key</ span > ) </ span > {
18131817 < span class ="hljs-keyword "> var</ span > cache = memoize.cache;
18141818 < span class ="hljs-keyword "> var</ span > address = < span class ="hljs-string "> ''</ span > + (hasher ? hasher.apply(< span class ="hljs-keyword "> this</ span > , < span class ="hljs-built_in "> arguments</ span > ) : key);
1815- < span class ="hljs-keyword "> if</ span > (!_. has(cache, address)) cache[address] = func.apply(< span class ="hljs-keyword "> this</ span > , < span class ="hljs-built_in "> arguments</ span > );
1819+ < span class ="hljs-keyword "> if</ span > (!has(cache, address)) cache[address] = func.apply(< span class ="hljs-keyword "> this</ span > , < span class ="hljs-built_in "> arguments</ span > );
18161820 < span class ="hljs-keyword "> return</ span > cache[address];
18171821 };
18181822 memoize.cache = {};
@@ -2145,7 +2149,7 @@ <h2 id="object-functions">Object Functions</h2>
21452149 </ div >
21462150
21472151 < div class ="content "> < div class ='highlight '> < pre > < span class ="hljs-keyword "> var</ span > prop = < span class ="hljs-string "> 'constructor'</ span > ;
2148- < span class ="hljs-keyword "> if</ span > (_. has(obj, prop) && !_.contains(keys, prop)) keys.push(prop);
2152+ < span class ="hljs-keyword "> if</ span > (has(obj, prop) && !_.contains(keys, prop)) keys.push(prop);
21492153
21502154 < span class ="hljs-keyword "> while</ span > (nonEnumIdx--) {
21512155 prop = nonEnumerableProps[nonEnumIdx];
@@ -2173,7 +2177,7 @@ <h2 id="object-functions">Object Functions</h2>
21732177 < span class ="hljs-keyword "> if</ span > (!_.isObject(obj)) < span class ="hljs-keyword "> return</ span > [];
21742178 < span class ="hljs-keyword "> if</ span > (nativeKeys) < span class ="hljs-keyword "> return</ span > nativeKeys(obj);
21752179 < span class ="hljs-keyword "> var</ span > keys = [];
2176- < span class ="hljs-keyword "> for</ span > (< span class ="hljs-keyword "> var</ span > key < span class ="hljs-keyword "> in</ span > obj) < span class ="hljs-keyword "> if</ span > (_. has(obj, key)) keys.push(key);</ pre > </ div > </ div >
2180+ < span class ="hljs-keyword "> for</ span > (< span class ="hljs-keyword "> var</ span > key < span class ="hljs-keyword "> in</ span > obj) < span class ="hljs-keyword "> if</ span > (has(obj, key)) keys.push(key);</ pre > </ div > </ div >
21772181
21782182 </ li >
21792183
@@ -3017,7 +3021,7 @@ <h2 id="object-functions">Object Functions</h2>
30173021 </ div >
30183022
30193023 < div class ="content "> < div class ='highlight '> < pre > key = keys[length];
3020- < span class ="hljs-keyword "> if</ span > (!(_. has(b, key) && eq(a[key], b[key], aStack, bStack))) < span class ="hljs-keyword "> return</ span > < span class ="hljs-literal "> false</ span > ;
3024+ < span class ="hljs-keyword "> if</ span > (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) < span class ="hljs-keyword "> return</ span > < span class ="hljs-literal "> false</ span > ;
30213025 }
30223026 }</ pre > </ div > </ div >
30233027
@@ -3164,7 +3168,7 @@ <h2 id="object-functions">Object Functions</h2>
31643168
31653169 < div class ="content "> < div class ='highlight '> < pre > < span class ="hljs-keyword "> if</ span > (!_.isArguments(< span class ="hljs-built_in "> arguments</ span > )) {
31663170 _.isArguments = < span class ="hljs-function "> < span class ="hljs-keyword "> function</ span > (< span class ="hljs-params "> obj</ span > ) </ span > {
3167- < span class ="hljs-keyword "> return</ span > _. has(obj, < span class ="hljs-string "> 'callee'</ span > );
3171+ < span class ="hljs-keyword "> return</ span > has(obj, < span class ="hljs-string "> 'callee'</ span > );
31683172 };
31693173 }</ pre > </ div > </ div >
31703174
@@ -3290,7 +3294,7 @@ <h2 id="object-functions">Object Functions</h2>
32903294
32913295 < div class ="content "> < div class ='highlight '> < pre > _.has = < span class ="hljs-function "> < span class ="hljs-keyword "> function</ span > (< span class ="hljs-params "> obj, path</ span > ) </ span > {
32923296 < span class ="hljs-keyword "> if</ span > (!_.isArray(path)) {
3293- < span class ="hljs-keyword "> return</ span > obj != < span class =" hljs-literal " > null </ span > && hasOwnProperty.call (obj, path);
3297+ < span class ="hljs-keyword "> return</ span > has (obj, path);
32943298 }
32953299 < span class ="hljs-keyword "> var</ span > length = path.length;
32963300 < span class ="hljs-keyword "> for</ span > (< span class ="hljs-keyword "> var</ span > i = < span class ="hljs-number "> 0</ span > ; i < length; i++) {
0 commit comments