Permalink
Browse files

Underscore 0.4.7 is done

  • Loading branch information...
1 parent 7a1f92a commit 4bd535e7f11ee4570a534e30ced65b93eae4894f @jashkenas jashkenas committed Dec 6, 2009
Showing with 35 additions and 23 deletions.
  1. +9 −0 Rakefile
  2. +4 −1 index.html
  3. +15 −15 underscore-min.js
  4. +7 −7 underscore.js
View
@@ -0,0 +1,9 @@
+require 'rubygems'
+require 'closure-compiler'
+
+desc "Use the Closure Compiler to compress Underscore.js"
+task :build do
+ js = File.open('underscore.js', 'r')
+ min = Closure::Compiler.new.compile(js)
+ File.open('underscore-min.js', 'w') {|f| f.write(min) }
+end
View
@@ -998,7 +998,10 @@ <h2 id="styles">Object-Oriented and Functional Styles</h2>
<p>
<b class="header">0.4.7</b><br />
-
+ Added <tt>isDate</tt>, <tt>isNaN</tt>, and <tt>isNull</tt>, for completeness.
+ Optimizations for <tt>isEqual</tt> when checking equality between Arrays
+ or Dates. <tt>_.keys</tt> is now <small><i><b>25%&ndash;2X</b></i></small> faster (depending on your
+ browser) which speeds up the functions that rely on it, such as <tt>_.each</tt>.
</p>
<p>
View

Some generated files are not rendered by default. Learn more.

Oops, something went wrong.
View
@@ -31,7 +31,7 @@
if (typeof exports !== 'undefined') exports._ = _;
// Maintain a reference to the Object prototype for quick access.
- var oproto = Object.prototype;
+ var objPro = Object.prototype;
// Current version.
_.VERSION = '0.4.7';
@@ -395,7 +395,7 @@
_.keys = function(obj) {
if(_.isArray(obj)) return _.range(0, obj.length);
var keys = [];
- for (var key in obj) if (oproto.hasOwnProperty.call(obj, key)) keys.push(key);
+ for (var key in obj) if (objPro.hasOwnProperty.call(obj, key)) keys.push(key);
return keys;
};
@@ -456,27 +456,27 @@
// Is a given value a real Array?
_.isArray = function(obj) {
- return oproto.toString.call(obj) == '[object Array]';
+ return objPro.toString.call(obj) == '[object Array]';
};
// Is a given value a Function?
_.isFunction = function(obj) {
- return oproto.toString.call(obj) == '[object Function]';
+ return objPro.toString.call(obj) == '[object Function]';
};
// Is a given value a String?
_.isString = function(obj) {
- return oproto.toString.call(obj) == '[object String]';
+ return objPro.toString.call(obj) == '[object String]';
};
// Is a given value a Number?
_.isNumber = function(obj) {
- return oproto.toString.call(obj) == '[object Number]';
+ return objPro.toString.call(obj) == '[object Number]';
};
// Is a given value a Date?
_.isDate = function(obj) {
- return oproto.toString.call(obj) == '[object Date]';
+ return objPro.toString.call(obj) == '[object Date]';
};
// Is the given value NaN -- this one is interesting. NaN != NaN, and

0 comments on commit 4bd535e

Please sign in to comment.