经典类原型继承

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了经典类原型继承相关的知识,希望对你有一定的参考价值。

  1. /**
  2.  * Extends a sub class from a super class.
  3.  * @param {Function} subClass The subclass.
  4.  * @param {Function} superClass The super class to extend.
  5.  */
  6. function extends(subClass, superClass) {
  7. var midClass = function() {
  8. };
  9. midClass.prototype = superClass.prototype;
  10. subClass.prototype = new midClass();
  11. subClass.superClass = superClass;
  12. }
  13.  
  14. /**
  15.  * A person.
  16.  * @constructor
  17.  * @param {string} name
  18.  */
  19. function Person(name) {
  20. /**
  21.   * @private {string}
  22.   */
  23. this._name = name;
  24. }
  25.  
  26.  
  27. /**
  28.  * @return {string}
  29.  */
  30. Person.prototype.getName = function() {
  31. return this._name;
  32. };
  33.  
  34. /**
  35.  * A user.
  36.  * @constructor
  37.  * @inheritDoc
  38.  * @extends {Person}
  39.  */
  40. function User(name) {
  41. User.superClass.call(this, name);
  42. }
  43. extends(User, Person);
  44.  
  45.  
  46. /**
  47.  * @return {number}
  48.  */
  49. User.prototype.getNameLength = function() {
  50. return this.getName().length;
  51. };
  52.  
  53. // Demo
  54. var user = new User('John Doe');
  55. user.alertName(); // John Doe
  56. document.writeln(user.getName()); // John Doe
  57. document.writeln(user instanceof User); // true;
  58. document.writeln(user instanceof Person); // true;

以上是关于经典类原型继承的主要内容,如果未能解决你的问题,请参考以下文章

原型继承优于经典继承的好处?

javascript原型的理解

javascript高级程序设计的几种经典继承

通过伪经典实例化 (JavaScript) 掌握原型继承

JS 类继承和原型继承区别

经典面试题:js继承方式上