Я знаю, что может создать класс с этим кодом:Javascript - могут ли пути классов иметь пространства имен?
class Polygon {
constructor(height, width) {
this.height = height;
this.width = width;
}
}
Однако, я хотел бы этот Polygon
класса находиться в пространстве имен Model
так, что я могу создать экземпляр Polygon
объектов, как это:
var myNewPolygon = new Model.Polygon(10, 50);
Возможно ли это?
Я попытался следующие:
var Model = Model || {};
class Model.Polygon {
constructor() {
this.height = height;
this.width = width;
}
}
var myNewPolygon = new Model.Polygon(10, 50);
Но это приводит к Uncaught SyntaxError: Unexpected token .
на линии 2.
Я также попытался:
var Model = Model || {};
class Polygon {
constructor(height, width) {
this.height = height || 0;
this.width = width || 0;
}
}
Model.Polygon = new Polygon();
var myNewPolygon = new Model.Polygon(10, 50);
Но это приводит к Uncaught TypeError: Model.Polygon is not a constructor
на линии 9 .
Это замечательно. Спасибо. –
Похоже, я могу использовать анонимный класс, как в вашем первом примере. Затем, если мне нужно обратиться к самому классу, я могу использовать полный путь с именами. '(этот экземпляр Model.Polygon)' вернет true в первом примере, хотя Model.Polygon указывает на анонимный класс. –
Yup. Но minifier не сможет минимизировать Model.Polygon (при условии, что вы экспортируете пространство имен Model), но может минимизировать Polygon (поскольку имя локально ограничено). В зависимости от того, как часто вы ссылаетесь на это имя (и независимо от того, уменьшаете ли вы файл), это может сделать разницу во времени загрузки и общую отзывчивость веб-страницы. – JDB