微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ES5和ES6类与继承的区别联系

标题ECMAScript 的原生构造函数大致有下面这些:

  1. List item
  2. Boolean()
  3. Number()
  4. String()
  5. Array()
  6. Date()
  7. Function()
  8. RegExp()
  9. Error()
  10. Object()

ES5中无法继承原生构造函数

原生构造函数会忽略apply方法传入的this,也就是说,原生构造函数的this无法绑定,导致拿不到内部属性。ES5 是先新建子类的实例对象this,再将父类属性添加到子类上,由于父类的内部属性无法获取,导致无法继承原生的构造函数

ES6可以

因为 ES6 是先新建父类的实例对象this,然后再用子类的构造函数修饰this,使得父类的所有行为都可以继承。
例外
ES6 改变了Object构造函数的行为,一旦发现Object方法不是通过new Object()这种形式调用,ES6 规定Object构造函数会忽略参数。

class Obj extends Object{
  constructor(){
    super(...arguments)
  }
}
var o = new Obj({attr:true});
console.log(o.attr); //输出 undefined

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐