javascript中的类关键字和原型

时间:2016-10-07 12:04:19

标签: javascript performance class memory

现在在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"定义类的方法和"原型"基于内存消耗,性能等定义类的方法?谢谢。

3 个答案:

答案 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 提供了一种更简单,更清晰的语法来创建对象并处理继承。

Source

答案 2 :(得分:0)

是的它几乎是一样的,因为class只是糖。 我知道的唯一区别是:

在这种情况下

class MyClass() {}

您无法var obj = MyClass()提供new。在另一种情况下,你可以。