3.类.js 875 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. function Person(name,age) {
  2. this.name = name;
  3. this.age = age;
  4. }
  5. /**
  6. * 所有构造函数 都有一个prototype属性 这个属性指向它的原型对象
  7. * 原型对象的特点:声明在原型对象下的属性和方法 都能被实例化对象所共享
  8. * 属性 构造函数下
  9. * 方法 原型对象下
  10. */
  11. Person.prototype.eat = function() {
  12. console.log("eat");
  13. }
  14. var p1 = new Person();
  15. p1.eat();
  16. // 构造函数constructor
  17. console.log(Person.prototype.constructor);
  18. /**
  19. * 继承父类的方法
  20. * 在子类构造函数里 通过调用父类的.call去继承
  21. * 子类的继承对象 = new 父类 继承方法
  22. */
  23. function fn1(name,age) {
  24. // this 当前对象
  25. Person.call(this,name,age)
  26. }
  27. /**继承父类的方法 */
  28. fn1.prototype= new Person();
  29. fn1.prototype.constructor = fn1;
  30. var p2 = new fn1("HH",20);
  31. console.log(p2,'p2');
  32. p2.eat();