构造函数与class实现类的区别

构造函数与class实现类的区别

首先聊聊ES6 class定义的类和用构造函数new出来的类的一些不同之处

  • class声明提升
  • class声明内部会启用严格模式
  • class的所有方法都是不可枚举的
  • class的所有方法都没有原型对象prototype
  • class定义的类不能被当做函数调用

ES6的class 关键字的实现原理

/**
  *ES6的类
  **/
class Parent{
    
    constructor(a){
        this.a = a;
    }

    print(){
        console.log('parent')
    }

}
---------------------------------------Babel 2 ES5------------------------------------------------------
/**
  *ES5来实现ES6的类
  **/
var Parent = /*#__PURE__*/function (a) {
  function Parent() {
    _classCallCheck(this, Parent);
    this.a = a;
  }

  _createClass(Parent, [{
    key: "print",
    value: function print() {
      console.log('parent');
    }
  }]);

  return Parent;
}();

你可能感兴趣的:(javascript,前端)