ES6 Class
ES6 引入了 Class(类)这个概念,作为对象的模板。通过class
关键字,可以定义类。
基本上,ES6 的class
可以看作只是一个语法糖,它的绝大部分功能,ES5 都可以做到,新的class
写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。
class Point {
constructor(x, y) {
this.x = x;
this.y = y;
}
toString() {
return '(' + this.x + ', ' + this.y + ')';
}
}
vue框架的源码:https://github.com/vuejs/vue/blob/dev/src/core/instance/index.js,没有使用class, 仍然使用function来创建类。原因是:
为何 Vue 不用 ES6 的 Class 去实现呢?我们看这里有很多 xxxMixin
的函数调用,并把 Vue
当参数传入,它们的功能都是给 Vue 的 prototype 上扩展一些方法,Vue 按功能把这些扩展分散到多个模块中去实现,而不是在一个模块里实现所有,这种方式是用 Class 难以实现的。这么做的好处是非常方便代码的维护和管理,这种编程技巧也非常值得我们去学习。
作者:孟繁贵 Email:meng010387@126.com 期待共同进步!