es5中继承和es6中class继承

es5中的类

es5中想要生成一个实例对象的话需要先定义一个构造函数,然后通过new操作符来生成实例对象。
当你定义了构造函数并且new 构造函数()了,后台就会隐式执行new Object()创建对象。并将构造函数的作用域给到新对象,即实例对象的this直接指向构造函数,

es6中的类

es6中引入了class类的概念,通过class关键字可以直接定义一个类。
注意事项:
1.定义方法不能使用function关键字
2.方法之间不能用逗号隔开,不然会发生报错

class定义的类实质上就是一个函数,她指向自身相关联的构造函数,可以理解为class类就是构造函数的另一种写法。
在通过class定义的类中也是存在prototype属性的。class定义的类中的所有方法都被保存在prototype中。
可以通过Object.assign方法动态给对象增加方法。
constructor方法是类的构造函数的默认方法,当你生成实例对象时他就默认存在。她默认返回实例对象的this,也可以指定他返回一个全新的对象。
在constructor内部定义的属性可以称为实例属性,constructor外声明的属性都是定义在原型上的,可以称为原型属性。然后通过hasOwnProperty()函数用于判断属性是否是实例属性,返回值为布尔值。然后通过in操作符可以判断属性是否在类中。结合这两个方法可以判断该属性时在类的实例上还是原型上。
class不存在变量提升,所以需要先定义再使用。因为ES6不会把类的声明提升到代码头部,但是ES5就不一样,ES5存在变量提升,可以先使用,然后再定义。

es5中继承

原型链继承:
简单理解就是子类的原型直接指向父类的实例对象。以此继承父类的属性和方法,但是子类没有办法向父类传参。
构造函数继承:
简单理解就是在子类的方法中通过父类.call(this)来修改子类的this指向,让他直接指向父类的实例。但是没有办法继承到父类原型上的方法。

组合继承:结合了前面两种继承方式的优点。技能调用父类的实例属性也能调用父类原型上的属性和方法,也解决了无法传参的缺点。

es6中class继承

首页通过class关键字定义一个类,然后在子类通过extends关键字来继承父类的属性和方法,在子类的constructor方法中通过super()关键字来继承父类的属性,在子类的原型上通过super()关键字来继承父类的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值