Javascript JS构造函数/原型与类的语义名称

Javascript JS构造函数/原型与类的语义名称,javascript,ecmascript-6,terminology,ecmascript-5,Javascript,Ecmascript 6,Terminology,Ecmascript 5,在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 s

在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类中,标记以下内容似乎足够简单:

  • 矩形
    是一个
  • getArea
    是一种实例方法
  • someStaticMethod
    是一个静态方法
我在教一门关于对象原型和类的课,所以我想让上面的措辞正确。但是另外

在es5 JS的上下文中,上面的分类是什么?以下是我的尝试:

  • 矩形
    是一个构造函数
  • getArea
    是一种原型方法
  • someStaticMethod
    是一种构造函数方法

我不确定他们在es5中的名称是否应该与在es6中的名称相同,或者我给他们的名称是否完全准确。

您给他们的名称非常准确,但最后一个可能有点争议:

Rectangle.someStaticMethod = function() {
  // does some utility or something
}
你说:

someStaticMethod
是一种构造函数方法

你可以称之为,或者只是一种方法,但本质上,是的,你问题中的所有这些都是正确的

Rectangle
是一个构造函数

是的,听起来不错。它是一个构造新实例的函数,因此描述是合适的

getArea
是一种原型方法

方法是作为属性的函数,在这种情况下,它确实是原型的一部分

someStaticMethod
是一种构造函数方法


这有点误导,因为这听起来好像是一种构造某种东西的方法。我更愿意称之为构造函数上的方法。然而,我通常称之为“静态方法”。

是的,这是我最不确定的一种方法,如果你必须在方法之前大胆说出你自己的话,你会选择哪种方法=D@AndrewKim我不知道,也许
对象方法
?或者
文本方法
?请注意,ES7允许您直接在class@MatthewHerbstES7对
静态
没有任何改变?@MatthewHerbst这就是ES6。ES7/ES2016引入的唯一语法是
**
,它是
Math.pow()
的语法糖。术语“实例方法”有时用于区分自己的方法(在实例本身的构造函数中创建)和原型方法。但是,当你不谈论这种差异时,仍然可以使用它。其他选项:“普通方法”、“非静态方法”或“方法”。@Bergi构造函数中设置的箭头函数绑定到实例。对我来说,它应该被称为实例方法,而不是原型中的函数集,因为它总是在特定实例的上下文中执行。谢谢,第三个是我最不舒服的。