在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中相同的名称,或者我给它们指定的名称是否完全准确。
答案 0 :(得分:1)
Rectangle
是一个构造函数
是的,听起来不错。这是一个构造新实例的函数,因此说明合适。
getArea
是一种原型方法
方法既是函数,又是属性,在这种情况下,它确实是原型的一部分。
someStaticMethod
是构造函数方法
这有点令人误解,因为听起来好像是构造某种东西的方法。我宁愿称其为构造方法上的方法。但是我通常将其称为“静态方法”。
答案 1 :(得分:0)
您提供的名字非常准确,除了最后一个可能值得商::
Rectangle.someStaticMethod = function() {
// does some utility or something
}
您说:
someStaticMethod
是构造方法
您可以将其称为方法或简单的方法,但从本质上讲,是的,问题中的所有内容都是正确的。