diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/utils.js | 71 | 
1 files changed, 10 insertions, 61 deletions
| diff --git a/lib/utils.js b/lib/utils.js index ab44e43f..cc68ba8c 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -177,65 +177,14 @@ Function.prototype.curry = function(fixedArguments) {  Array.copy = function(array) { return Array.prototype.slice.call(array, 0); };  /* - * Simple JavaScript Inheritance, by John Resig. - * This provides a short syntax for organizing code into classes. - * Taken from http://ejohn.org/blog/simple-javascript-inheritance/. + * A very simple method for defining a new class (constructor and methods) using a single hash. + * No support for inheritance is included because we really shouldn't need it.   */ -(function(){ -  var initializing = false, fnTest = /xyz/.test(function(){xyz;}) ? /\b_super\b/ : /.*/; -  // The base Class implementation (does nothing) -  this.Class = function(){}; - -  // Create a new Class that inherits from this class -  Class.extend = function(prop) { -    var _super = this.prototype; - -    // Instantiate a base class (but only create the instance, -    // don't run the init constructor) -    initializing = true; -    var prototype = new this(); -    initializing = false; - -    // Copy the properties over onto the new prototype -    for (var name in prop) { -      // Check if we're overwriting an existing function -      prototype[name] = typeof prop[name] == "function" && -        typeof _super[name] == "function" && fnTest.test(prop[name]) ? -        (function(name, fn){ -          return function() { -            var tmp = this._super; - -            // Add a new ._super() method that is the same method -            // but on the super-class -            this._super = _super[name]; - -            // The method only need to be bound temporarily, so we -            // remove it when we're done executing -            var ret = fn.apply(this, arguments); -            this._super = tmp; - -            return ret; -          }; -        })(name, prop[name]) : -        prop[name]; -    } - -    // The dummy class constructor -    function Class() { -      // All construction is actually done in the init method -      if ( !initializing && this.init ) -        this.init.apply(this, arguments); -    } - -    // Populate our constructed prototype object -    Class.prototype = prototype; - -    // Enforce the constructor to be what we expect -    Class.prototype.constructor = Class; - -    // And make this class extendable -    Class.extend = arguments.callee; - -    return Class; -  }; -})(); +Class = { +  extend: function(properties) { +    var newClass = function() { if (this.init) this.init.apply(this, arguments); }; +    newClass.prototype = properties; +    newClass.constructor = newClass; +    return newClass; +  } +};
\ No newline at end of file | 
