继承

程序中的继承: 子类可以继承父类的一些属性和方法

class Father { //父类
constructor () {
}
money () {
console.log(100)
}
}
class Son extends Father { //子类继承父类
}
let son = new Son()
son.money() // 100
son.

super关键字

super关键字用于访问和调用对象父类上的函数,可以通过调用父类的构造函数,也可以调用父类的普通函数

class Father { //父类
constructor (x, y) {
this.x = x
this.y = y
}
money () {
console.log(100)
}
sum () {
console.log(this.x + this.y)
}
}
class Son extends Father { //子类继承父类
constructor (x, y) {
super(x, y) //调用了父类中的构造函数
}
}
let son = new Son(1,2)
son.sum() // 3
son.

继承的特点:

  1. 继承中,如果实例化子类输出一个方法,先看子类有没有这个方法,如果有就先执行子类,(就近原则)
  2. 继承中,如果子类里面没有,就去查找父类有没有这个方法,如果有,就执行父类的这个方法
  3. 在子类中,可以用super调用父类元素的方法
class Father {
say() {
return '我是父元素'
}
sing() {
return '父元素唱一首歌'
} }
class Son extends Father {
say() {
console.log('我是子元素')
}
sing() {
console.log(super.sing())
}
}
var son = new Son()
son.say() //我是子元素
son.sing() //

子元素可以继承父元素的方法的同时,子元素也可以扩展自己的其他方法,子类在构造函数中用super调用父类的构造方法时候,必须放在子类的this之前调用

class Father {
constructor(x, y) {
this.x = x
this.y = y
}
sum() {
console.log(this.x + this.y)
}
} class Son extends Father {
constructor(x,y) {
//利用super 调用父类的构造函数
super(x,y)
this.x = x
this.y = y
}
subtract() {
console.log(this.x - this.y)
}
}
let son = new Son(5,3)
son.subtract() // 2
son.sum() //8

ES6中的类和对象的4个注意点:

  1. 在ES6中类没有变量提升,所以必须先定义类,才能通过类实例化对象
  2. 类里面的共有属性和方法一定要加this使用
  3. 类里面的this指向问题
  4. constructor里面的this指向实例对象,方法里面的this向这个方法的调用者

总结

这篇文章主要分享了,关于类的继承、继承需要的用到的extends,super、ES6中的类和对象的注意点等。

如果想了解更多,请扫描二维码

最新文章

  1. install alilang
  2. JMS确认机制
  3. struts2标签获取parameter,request,session,application中的值
  4. [wordpress]后台自定义菜单字段和使用wordpress color picker
  5. Python解决codeforces ---- 1
  6. ORA-00119: invalid specification for system parameter LOCAL_LISTENER
  7. CKEditor 自主控制图片上传
  8. RocketMQ初步应用架构理论
  9. linux—粘滞位的设置
  10. log4j:ERROR Category option " 1 " not a decimal integer.错误解决
  11. spring里的三大拦截器
  12. HTML基础之JS中的字符转义--转义中文或特殊字符
  13. spring boot集成netty-服务端和客户端demo
  14. powerdesigner的PDM模型name和comment相互复制替换
  15. easyUI按钮图表对照大全
  16. ML.NET 示例:推荐之矩阵分解
  17. docker-ce-17.09 网络基础配置
  18. Oracle 存储容量最大的字段类型CLOB
  19. Asp.Net MVC3.0项目部署到Win7 64过程总结
  20. java动态代理的两种方法

热门文章

  1. redis 注意事项
  2. 可视化限流管理,Sentinel 控制台启动和接入
  3. python3中的RE(正则表达式)
  4. VMware 虚拟机开机黑屏
  5. 快速构建第三方api应用
  6. 前端基础JavaScript
  7. VLC for CentOS7
  8. Python中__init__的用法和理解
  9. potel99se 文件损坏修复
  10. SpringCloud与微服务Ⅴ --- Eureka服务注册与发现