欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

浅析JS原型继承与类的继承

程序员文章站 2023-11-17 15:51:58
我们先看js类的继承

我们先看js类的继承

<!doctype html>
<html>

<head>
  <meta charset="utf-8">
    <title>js类的继承</title>
</head>

<body>
  /* -- 类式继承 -- */
  <script type="text/javascript">
  //先声明一个超类
  var animal = function(name) {
      this.name = name;
    }
    //给这个超类的原型对象上添加方法
  animal.prototype.eat = function() {
    console.log(this.name + " eat");
  };
  //实例化这个超
  var a = new animal("animal");

  //再创建构造函数对象类
  var cat = function(name, sex) {
      //这个类中要调用超类animal的构造函数,并将参数name传给它
      animal.call(this, name);
      this.sex = sex;
    }
    //这个子类的原型对象等于超类的实例
  cat.prototype = new animal();
  //因为子类的原型对象等于超类的实例,所以prototype.constructor这个方法也等于超类构造函数

  console.log(cat.prototype.constructor);
  //这个是animal超类的引用,所以要从新赋值为自己本身
  cat.prototype.constructor = cat;
  console.log(cat.prototype.constructor);
  //子类本身添加了getsex 方法
  cat.prototype.getsex = function() {
      return this.sex;
    }
    //实例化这个子类
  var _m = new cat('cat', 'male');
  //自身的方法
  console.log(_m.getsex()); //male
  //继承超类的方法
  console.log(_m.eat()); //cat
  </script>
</body>

</html>

 我们再看js原型继承

<!doctype html>
<html>

<head>
  <meta charset="utf-8">
  <title>js原型继承</title>
</head>

<body>
  <!--原型继承-->
  <script type="text/javascript">
  //clone()函数用来创建新的类person对象
  var clone = function(obj) {
    var _f = function() {};
    //这句是原型式继承最核心的地方,函数的原型对象为对象字面量
    _f.prototype = obj;
    return new _f;
  }

  //先声明一个对象字面量
  var animal = {
      somthing: 'apple',
      eat: function() {
        console.log("eat " + this.somthing);
      }
    }
    //不需要定义一个person的子类,只要执行一次克隆即可
  var cat = clone(animal);
  //可以直接获得person提供的默认值,也可以添加或者修改属性和方法
  console.log(cat.eat());
  cat.somthing = 'orange';
  console.log(cat.eat());

  //声明子类,执行一次克隆即可
  var someone = clone(cat);
  </script>
</body>

</html>

我们可以试验一下,js类的继承 children.constructor==father 返回的是true,而原型继承children.constructor==father 返回的是false;

以上这篇浅析js原型继承与类的继承就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。