[英]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.