В 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, или имена, которые я им дал, абсолютно точны.
static
методы непосредственно в классе - person Matthew Herbst   schedule 05.12.2018static
? - person Bergi   schedule 05.12.2018**
, который был синтаксическим сахаром дляMath.pow()
. - person Patrick Roberts   schedule 05.12.2018getArea()
— это метод прототипа, аgetArea = () => {...}
— метод экземпляра. Это имеет значение, например, в React, где методы часто используются в качестве обратных вызовов и должны иметь привязку к контексту. - person marzelin   schedule 05.12.2018