26.复习ES5构造函数继承

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // 手机---父级构造函数
      function Phone(brand, price) {
        this.brand = brand;
        this.price = price;
      }

      Phone.prototype.change = function () {
        console.log("改变自己,改变全世界");
      };

      // 智能手机---子级构造函数
      function SmartPhone(brand, price, color, size) {
        // 继承父类的一些方法及属性,通过call方法改变this指向,让Phone的this指向SmartPhoen里面的this
        Phone.call(this, brand, price);
        this.color = color;
        this.size = size;
      }

      // 设置子级构造函数的原型---让SmartPhone的prototype指向Phone实例对象的__proto__
      SmartPhone.prototype = new Phone(); //这里不加()也可以  Chrome浏览器的[[prototype]]有时间了解一下,相当于__proto__,表示对象的应用关系!
      // 一般会做下面的一个校正,不做也可以
      SmartPhone.prototype.construcuor = SmartPhone;

      // 给SmartPhone原型上添加方法
      SmartPhone.prototype.photo = function () {
        console.log("我可以拍照");
      };

      SmartPhone.prototype.playGame = function () {
        console.log("我可以玩游戏!");
      };

      let apple = new SmartPhone("苹果", "1299", "灰色", "5.5inch");
      console.log(apple);
    </script>
  </body>
</html>
posted @ 2022-01-02 16:22  问某完红  阅读(3)  评论(0编辑  收藏  举报