繁体   English   中英

javascript中的类关键字和原型

[英]Class keyword and prototype in javascript

现在在 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 的这两个定义是否相同? 为什么? 任何人都可以帮助我区分基于内存消耗、性能等定义类的“类”方式和定义类的“原型”方式吗? 谢谢你。

ECMAScript 6 中引入的 JavaScript 类是对 JavaScript 现有的基于原型的继承的语法糖。 类语法并没有向 JavaScript 引入一个新的面向对象的继承模型。 JavaScript 类提供了一种更简单、更清晰的语法来创建对象和处理继承

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes

这是原型方式的简单语法替代。

ECMAScript 6 中引入的 JavaScript 类是对 JavaScript 现有的基于原型的继承的语法糖。 类语法并没有向 JavaScript 引入一个新的面向对象的继承模型。 JavaScript提供了一种更简单、更清晰的语法来创建对象和处理继承。

来源

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

在这种情况下

class MyClass() {}

你不能做var obj = MyClass()你必须提供new 在另一种情况下,你可以。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM