ES6学习(8)原生继承

简介: ES6学习(8)原生继承

在es5中要实现继承,需要两个关键步骤:
①去继承构造函数中的成员,
②去继承原型对象上的成员。
对于去继承构造函数中的成员,我们可以借助apply或call方法,唯一的区别就是参数的不同,一个是数组,一个是单个传入。

1.父类(我们把方法定义在父类上,
这会造成,每次new实例的时候就会创建一个run方法,
放到原型对象上,就会去原型对象上找)
  function Animal(name, age){
   
     this.age = age;
     this.name = name;
     this.run = function () {
   
         console.log('run');
     }
  }
  2.创建一个Dog子类
  function Dog(name, age){
   
     Animal.call(this, name, age);
  }
3. 缺点:每次new一个dog实例,都需要调用Animal,效率下降

去继承原型对象中的方法

关键代码:Dog.prototype = Animal.prototype
通过这行代码我们可以去实现原型对象上的继承,
但是有一个缺点,就是无法实现个性化的继承。
也就是说如果我们往Dog.prototype上加一个成员,那么Animal的prototype上也会存在。
  1. 如果我们还是想实现Dog.prototype上添加而Animal上面不增加,应该如何做呢?
    需要借助一个中间夹层
    function F(){
         }
    F.prototype = Animal.prototype;
    Dog.prototype = new F();
    1:创建了一个新的构造函数F,让F的原型对象指向Animal的原型对象,然后让Dog的原型对象等于F的实例对象,因为F的实例对象拥有F.prototype的成员,即用于Ani
    
相关文章
ES6学习(10)ES6的继承
ES6学习(10)ES6的继承
|
10天前
|
JavaScript
typeScript进阶(13)_类与注意事项(八项特性)
TypeScript的类支持特性包括:构造函数、继承(使用`extends`)、公有/私有/受保护修饰符、只读修饰符、参数属性、存取器(getters/setters)、抽象类(用`abstract`声明)。类可用作类型。
9 0
typeScript进阶(13)_类与注意事项(八项特性)
|
2月前
|
JavaScript 前端开发 Java
ES6新特性(六):类
ES6新特性(六):类
|
5月前
|
存储 JavaScript 前端开发
对象和类:JS是一种基于对象的语言,可以创建和使用自定义对象。ES6引入了类的概念,使得面向对象编程更加方便。
对象和类:JS是一种基于对象的语言,可以创建和使用自定义对象。ES6引入了类的概念,使得面向对象编程更加方便。
40 0
|
10月前
|
网络架构
ES6学习(六)—函数的扩展
ES6学习(六)—函数的扩展
|
11月前
ES6对象扩展
ES6对象扩展
35 0
|
11月前
ES5的继承和ES6的继承有什么区别
ES5的继承和ES6的继承有什么区别
50 0
|
Java
原生类
今天做笔试题时发现了一个概念,查阅了文档之后才明白,原生类的存在,慢慢学习慢慢进步吧! Java中,数据类型分为基本数据类型(或叫做原生类、内置类型)和引用数据类型。 Java不是纯的面向对象的语言,不纯的地方就是这些基本数据类型不是对象。当然初期Java的运行速度很慢,但是基本数据类型能在一定程度上改善性能。如果你想编写纯的面向对象的程序,用包装器类是取代基本数据类型就可以了。
94 0
|
JavaScript 前端开发
🍉JavaScript进阶——类的本质及ES5的新增方法
🍉JavaScript进阶——类的本质及ES5的新增方法
88 9
🍉JavaScript进阶——类的本质及ES5的新增方法
ES6 从入门到精通 # 08:扩展的对象的功能
ES6 从入门到精通 # 08:扩展的对象的功能
71 0
ES6 从入门到精通 # 08:扩展的对象的功能
下一篇
无影云桌面