diff options
| author | Phil Crosby | 2012-05-05 18:29:51 -0700 |
|---|---|---|
| committer | Phil Crosby | 2012-05-05 18:32:14 -0700 |
| commit | 49a7cc898a52f74a42beabb7274733a53f692427 (patch) | |
| tree | 86f7821349eae8c3d24943f35c4fbf2c4bd5cfb0 /lib | |
| parent | 0638daca21aef47b8cc91a366e21676679903c0c (diff) | |
| download | vimium-49a7cc898a52f74a42beabb7274733a53f692427.tar.bz2 | |
Get rid of the inheritance features of Class.extend, since we don't need them atm.
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 |
