Revision: 28428
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at July 8, 2010 05:42 by hedgerwang
Initial Code
/** * Extends a sub class from a super class. * @param {Function} subClass The subclass. * @param {Function} superClass The super class to extend. */ function extends(subClass, superClass) { var midClass = function() { }; midClass.prototype = superClass.prototype; subClass.prototype = new midClass(); subClass.superClass = superClass; } /** * A person. * @constructor * @param {string} name */ function Person(name) { /** * @private {string} */ this._name = name; } /** * @return {string} */ Person.prototype.getName = function() { return this._name; }; /** * A user. * @constructor * @inheritDoc * @extends {Person} */ function User(name) { User.superClass.call(this, name); } extends(User, Person); /** * @return {number} */ User.prototype.getNameLength = function() { return this.getName().length; }; // Demo var user = new User('John Doe'); user.alertName(); // John Doe document.writeln(user.getName()); // John Doe document.writeln(user instanceof User); // true; document.writeln(user instanceof Person); // true;
Initial URL
Initial Description
Initial Title
Classic Class Prototype Inheritance
Initial Tags
javascript
Initial Language
JavaScript