现在在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的这两个定义是否相同?为什么?谁能帮助我区分" class"定义类的方法和"原型"基于内存消耗,性能等定义类的方法?谢谢。
答案 0 :(得分:0)
ECMAScript 6中引入的JavaScript类是基于JavaScript的现有基于原型的继承的语法糖。类语法不向JavaScript引入新的面向对象的继承模型。 JavaScript类为创建对象和处理继承提供了更简单,更清晰的语法
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes
答案 1 :(得分:0)
这是原型方式的简单语法替换。
ECMAScript 6中引入的JavaScript类是JavaScript现有的基于原型的继承的语法糖。类语法没有向JavaScript引入新的面向对象的继承模型。 JavaScript 类提供了一种更简单,更清晰的语法来创建对象并处理继承。
答案 2 :(得分:0)
是的它几乎是一样的,因为class
只是糖。
我知道的唯一区别是:
在这种情况下
class MyClass() {}
您无法var obj = MyClass()
提供new
。在另一种情况下,你可以。