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

时间:2018-12-04 21:41:16

标签: 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 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中相同的名称,或者我给它们指定的名称是否完全准确。

2 个答案:

答案 0 :(得分:1)

  

Rectangle是一个构造函数

是的,听起来不错。这是一个构造新实例的函数,因此说明合适。

  

getArea是一种原型方法

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

  

someStaticMethod是构造函数方法

这有点令人误解,因为听起来好像是构造某种东西的方法。我宁愿称其为构造方法上的方法。但是我通常将其称为“静态方法”。

答案 1 :(得分:0)

您提供的名字非常准确,除了最后一个可能值得商::

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

您说:

  

someStaticMethod构造方法

您可以将其称为方法或简单的方法,但从本质上讲,是的,问题中的所有内容都是正确的。