es5继承

es5要继承,是这样的:

function Animal(name){this.name = name;this.thirsty = 100;this.food = [];
}
Animal.prototype.drink = function(){this.thirsty -= 10;return this;
}
Animal.prototype.eat = function(value){this.food.push(value);return this;
}function Dog(name, age){Animal.call(this, name); // 继承Animalthis.age = age;
}
// Dog.prototype = Animal.prototype; //Dog与Animal的原型指向相同,Dog和Animal对象的原型就一样了
Dog.prototype = Object.create(Animal.prototype);//Dog对象的原型是一个空对象,Dog原型的原型是Animal
Dog.prototype.constructor = Dog;
Dog.prototype.bark = function(){console.log(`我是${this.name}`);
}let lili = new Dog("lili", 2);

方法的使用:

查看原型:

es6继承

es6中引入了关键字:extends和super,仿类结构,方便地继承
可以继承父类的方法,也可以有自己的方法

class Animal {constructor(name){this.name = name;this.thirsty = 100;this.food = [];}drink(){this.thirsty -= 10;return this;}eat(item){this.food.push(item);return this;}
}
class Dog extends Animal {constructor(name, age){super(name);this.age = age;// 必须super,super之后子类才能使用this}bark(){console.log(`我是${this.name}`);}
}let lili = new Dog("lili", 2);

效果一致:

静态方法的继承

父类有的静态方法,子类也有
给父类Animal添加一个静态方法,用关键字static,子类不动

效果:父类Animal和子类Dog均可以使用该静态方法(静态方法直接由类调用,对象不可调用)

继承内置构造函数

class movieArr extends Array {constructor(name, ...movies){super(...movies); // 相当于new Array(...movies)this.name = name;}add(item){this.push(item);}//由于继承了Array,所以可以直接使用this.push添加数组topScore(limit){return this.sort( (a, b) => a.score > b.score ? -1 : 1 ).slice(0,limit);}// 评分从高到低排序,由用户指定要top几位
}let movies = new movieArr("我喜欢的动漫",{"name":"斗罗大陆",score:9.3},{"name":"斗破苍穹",score:9.1},{"name":"狐妖小红娘",score:9.6},{"name":"吞噬星空",score:8.7},
); //评分仅为当前数据

效果:对象内容一项项地添加到数组里
排序是按评分从高到低排序

前端提高篇(127):es6类的继承相关推荐

  1. 从babel实现es6类的继承来深入理解js的原型及继承

    先聊个5毛钱的背景吧 自从有了babel这一个利器之后,es6现在已经被广泛的使用.JavaScript 类实质上是 JavaScript 现有的基于原型的继承的语法糖.类语法不会为JavaScrip ...

  2. Java提高篇 —— Java三大特性之继承

    一.前言 在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事 ...

  3. 前端提高篇(十一)JS进阶8函数参数及arguments

    形参与实参 基础点可以看这篇文章 获取形参个数:函数名.length function add(a,b,c,d,e){console.log('形参个数:' + add.length);} 运行效果: ...

  4. 前端提高篇(六十七):HTML进阶8:canvas画布基本知识(二)绘制图形、曲线,设置图形样式,渐变

    绘制图形 绘制矩形 1.先创建矩形,再描边: canvas {border: 1px solid #000;width: 200px;height: 200px; } <canvas id=&q ...

  5. 前端提高篇(五十四)练习7:animation动画练习

    效果:练习6的过渡效果基础上,对hover时描述的出现加一些动画效果,识别鼠标进出的方向,描述文字跟着鼠标的方向出现或消失 问题1:判断鼠标进出的方向 e.offsetX和e.offsetY用于获取相 ...

  6. 前端提高篇(五十七)练习9:3d立方体旋转

    6个面上标有数字1-6,数字和立方体各面的对应关系是: 前1 上2 后3 下4 左5 右6 .wrapper {perspective: 600px; } .box {transform-style: ...

  7. 前端提高篇(八十六):jQuery的class属性操作addClass()与removeClass()、hasClass()、toggleClass()

    1.addClass()与removeClass()基本使用 addClass:添加class:removeClass:移除class,返回this对象,支持链式操作 $('div').addClas ...

  8. 前端提高篇(116):简单了解postMessage通信

    1.背景 还是跨域问题,之前提到JSONP时,提到了src不受跨域影响的特性,可以来实现跨域获取不同源的资源 当时主要用了script的src来做JSONP的案例 这次对iframe举例,来了解pos ...

  9. 前端提高篇(101):jQuery高级方法:extend使用

    $.extend()作用: 1.用于将一个或多个对象的内容合并到目标对象 2.为全局对象jQuery添加新的函数 参数: 合并对象的基本使用 //创建两个对象 var people1 = {ccy:{ ...

最新文章

  1. Note:一些优化建议
  2. Python ConfigParser 模块
  3. vue学习:vue中data和return data的区别
  4. Shell入门(三)之字符串
  5. shopxo二次开发:商品管理添加、商品导入库存、设置库存量(教程)
  6. input组件android,React-Native TextInput组件详解及实例代码
  7. 四则运算编程题第二版
  8. 进程ld-linux-x86-64是什么,解决挖矿病毒占用cpu以及误删 ld-linux-x86-64.so.2 文件的问题...
  9. 鹏业安装算量材料表不能复制问题解答
  10. Python实现的异步代理爬虫及代理池
  11. 802.11/wlan/wifi/无线相关学习资料整理
  12. Flutter(十七) 实现国际化
  13. 红米note3总显示无服务器,红米note3死机了怎么办 具体解决措施【图文】
  14. [DAX] 日期时间函数
  15. IBM X3650服务器使用说明
  16. 移动互联网APP运营技巧分享
  17. A Game of Thrones(103)
  18. 改装普通电脑为触屏电脑
  19. skycc营销软件为我赚取的第一个30万
  20. 原本的善意,别人有所误解

热门文章

  1. struts2类型日期类型转换器的bug
  2. perf工具与perf report children的含义
  3. HTML单选框美化和动效插件
  4. 默纳克全系列电梯软件刷协议 万能MT底座升级 万能服务器默纳克液晶服务器程序
  5. Python OpenCV实现姿态识别
  6. Unity【Lerp Slerp】- 线性插值与球形插值的区别
  7. 蛇类高海拔环境的适应机制研究获进展
  8. html中的相对定位 和 绝对定位
  9. MySQL 到 SQL Server 实时数据同步实操分享
  10. 格力空调有董明珠,安吉尔净水器有孔娜?