【发布时间】:2017-02-16 10:18:07
【问题描述】:
现在在 Javascript 中,在 ECMAScript 6 之后,可以使用 class 关键字声明类,这对于来自 Java 之类语言的程序员(我自己也是)来说非常好。
class MyClass {
constructor(a, b) {
this.a = a;
this.b = b;
}
mult() {
return this.a * this.b;
}
}
但我们甚至可以使用定义类的原型方式。
// The same code as above, but with prototype.
function MyClass(a, b) {
this.a = a;
this.b = b;
}
MyClass.prototype.mult = function() {
return this.a * this.b;
}
这两个 MyClass 的定义是一样的吗?为什么?任何人都可以帮助我区分定义类的“类”方式和基于内存消耗、性能等定义类的“原型”方式吗?谢谢。
【问题讨论】:
-
您为什么不测量并获得问题的答案?作为 JS 开发人员,您担心声明封装代码的两种不同方式之间的内存消耗。这毫无意义。
-
上面的代码是一样的,但是类通过
extends关键字抽象了一个子类。当然你也可以不使用类做同样的事情,但这会比上面的比较复杂一些。
标签: javascript performance class memory