Как получить доступ к методу класса или к тому же внутри статического метода класса?
Единственный способ получить доступ к информации об экземпляре из метода static
- это создатьэкземпляр (или получить его в качестве параметра, или закрыть над ним [что было бы очень странно) и т. д .; например, вам нужен экземпляр).В этом суть методов static
: они не связаны с экземпляром класса, они связаны с функцией конструктора.
Ваш метод generateModel
, как показано, не используетэкземпляр также может иметь смысл и для static
.Затем вы получите к нему доступ через this.generateModel
(при условии, что mapToModel
вызывается через ProductsCollection.mapToModel
) или ProductsCollection.generateModel
(если вы не хотите делать это предположение):
class ProductsCollection {
static generateModel() {
return {name: "testing"};
}
static mapToModel(legacy) {
return this.generateModel();
// or `return ProductsCollection.generateModel();` if you want to use
// `ProductsCollection` specifically and not be friendly
// to subclasses
}
}
console.log(ProductsCollection.mapToModel({}));
Или, если generateModel
нужна информация об экземпляре, вы можете использовать new ProductsCollection
(или new this
) в вашем mapToModel
для создания экземпляра, а затем получить доступ к generateModel
в этом случае.
class ProductsCollection {
generateModel() {
return {name: "testing"};
}
static mapToModel(legacy) {
const instance = new this();
// or `const instance = new ProductsCollection();` if you want
// to use `ProductsCollection` specifically and not be friendly
// to subclasses
return instance.generateModel();
}
}
console.log(ProductsCollection.mapToModel({}));