【发布时间】:2019-05-06 09:43:48
【问题描述】:
在 javascript es6 中,我们有可以执行以下操作的类:
class Rectangle {
constructor(height, width) {
this.height = height;
this.width = width;
}
getArea() {
return this.height * this.width
}
static someStaticMethod() {
// does some utility or something
}
}
这大致只是以下旧 es5 代码的语法糖:
function Rectangle() {
this.height = height;
this.width = width;
}
Rectangle.prototype.getArea = function() {
return this.height * this.width
}
Rectangle.someStaticMethod = function() {
// does some utility or something
}
在 es6 类中,标记以下内容似乎很简单:
-
Rectangle是一个类 -
getArea是一个实例方法 -
someStaticMethod是 类 或 静态 方法
我正在教一门关于对象原型和类的课程,所以我想让上面的措辞正确。但另外...
在 es5 JS 的上下文中,上面的分类是什么?以下是我的尝试:
-
Rectangle是一个构造函数 -
getArea是一个原型方法 -
someStaticMethod是一个构造方法
我不完全确定它们在 es5 中是否应该与 es6 中的名称相同,或者我给它们的名称是否完全准确。
【问题讨论】:
-
请注意,ES7 允许您直接在类上定义
static方法 -
@MatthewHerbst ES7 没有改变
static? -
@MatthewHerbst 那是 ES6。唯一引入的 ES7/ES2016 语法是
**,它是Math.pow()的语法糖。 -
术语“实例方法”有时用于区分自己的方法(在实例本身的构造函数中创建)和原型方法。但是,当您不谈论这种差异时,它仍然可以使用。其他选项:“普通方法”、“非静态方法”或只是“方法”。
-
@Bergi 在构造函数中设置的箭头函数绑定到实例。对我来说,它应该被称为实例方法而不是原型中设置的函数,因为它总是在该特定实例的上下文中执行。
标签: javascript ecmascript-6 terminology ecmascript-5