ES5和ES6下Class对象区别

ES5和ES6下Class对象区别

Tags
ES6
JavaScript
面向对象编程
CreatedTime
Aug 18, 2022 10:01 AM
Slug
2019-04-09-es6-es5-class
UpdatedTime
Last updated August 18, 2022
题目:es6 class 的 new 实例和 es5 的 new 实例有什么区别?
ES6中(和ES5相比),classnew实例有以下特点:
  • class的构造参数必须是new来调用,不可以将其作为普通函数执行
  • es6class不存在变量提升
  • 最重要的是:es6 内部方法不可以枚举。es5 的prototype上的方法可以枚举。
为此我做了以下测试代码进行验证:
console.log(ES5Class()); // es5:可以直接作为函数运行 // console.log(new ES6Class()) // 会报错:不存在变量提升 function ES5Class() { console.log("hello"); } ES5Class.prototype.func = function() { console.log("Hello world"); }; class ES6Class { constructor() {} func() { console.log("Hello world"); } } let es5 = new ES5Class(); let es6 = new ES6Class(); // 推荐在循环对象属性的时候,使用for...in // 在遍历数组的时候的时候,使用for...of console.log("ES5 :"); for (let _ in es5) { console.log(_); } // es6:不可枚举 console.log("ES6 :"); for (let _ in es6) { console.log(_); }