在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中一样被调用,或者我给它们的名称是否完全准确。
Rectangle
是一个构造函数
是的,听起来不错。它是一个构造新实例的函数,因此描述很合适。
getArea
是的原型方法
方法是一个作为属性的函数,在这种情况下,它确实是原型的一部分。
someStaticMethod
是一个构造函数方法
这有点说错了,因为听起来好像这是一个构建东西的方法。我宁愿将其称为构造函数上的方法。然而,我通常称之为"静态方法"。
您给出的名称非常准确,除了最后一个可能有点争议:
Rectangle.someStaticMethod = function() {
// does some utility or something
}
你说:
someStaticMethod
是构造函数方法
你可以这样称呼它,或者简单地称它为一个方法,但本质上,是的,你的问题中的所有内容都是正确的。