ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
``` class nameFunc { constructor(x, y) { this.x = x; this.y = y; } addFunc() { return this.x + this.y } moveFunc() { return this.x - this.y } } var b = new nameFunc(30,20) console.log(b.addFunc()) //50 console.log(b.moveFunc()) //10 ``` > 上面这个等同于下面的ES5写法 ``` function nameFunc(x,y){ this.x = x; this.y = y; } nameFunc.prototype.addFunc = function () { return this.x + this.y; }; var b = new nameFunc(30,20) console.log(b.addFunc()) //50 ``` > ES6 提供了更接近传统语言的写法,引入了 Class(类)这个概念,作为对象的模板。通过class关键字,可以定义类。 ***** > 基本上,ES6 的class可以看作只是一个语法糖,它的绝大部分功能,ES5 都可以做到,新的class写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。上面的代码用 ES6 的class改写,就是顶部这样。 ***** > 上面代码定义了一个“类”,可以看到里面有一个constructor方法,这就是构造方法,而this关键字则代表实例对象。也就是说,ES5 的构造函数Point,对应 ES6 的Point类的构造方法。 ***** > 注意,定义“类”的方法的时候,前面不需要加上function这个关键字,直接把函数定义放进去了就可以了。另外,方法之间不需要逗号分隔,加了会报错。 ***** ## class 类 无参数的操作 ``` class Bar { doStuff() { console.log('stuff'); } } var b = new Bar(); b.doStuff() // "stuff" ``` ES6 class类的操作,更具想象力,业务更清晰 > 比如,我们做购物车的业务,可以定义一个购物车的类,购物车需要的业务逻辑都放这一个类里,清晰明了!