У меня есть следующее в модели Node Js
. Этот файл существует в другом проекте, который нельзя изменить, но он локально доступен для других проектов.
module.exports = {
base: require('*/cartridge/models/product/decorators/base'),
availability: require('*/cartridge/models/product/decorators/availability')
};
Все методы здесь действуют как constructors
из class Product
. Теперь я хочу добавить еще один атрибут, который должен быть доступен, когда я пытаюсь получить доступ к Product.badge
. Для этого я попытался расширить приведенную выше модель следующим образом:
var indexBase = require('*/cartridge/models/product/decorators/index');
indexBase.badge = require('*/cartridge/models/product/decorators/badge');
module.exports = indexBase;
Но, кажется, выдает ошибку, я пытался зарегистрировать Badge Type
, но я все еще не могу получить доступ к типу значка здесь.
Я вызываю вышеуказанный объект следующим образом:
var decorators = require('*/cartridge/models/product/decorators/index');
decorators.badge(product, variantProduct);
Я хочу знать, как я могу расширить существующий класс, если я хочу добавить пользовательский constructor
?
Здесь только синтаксис основан на Node Js
, но этот код написан для SFRA в Salesforce B2C Commerce.
@AritraChakraborty, спасибо, я попробую, это может быть очень полезно.
Все, что вам нужно сделать, это в файле index.js
:
var indexBase = module.superModule;
вместо:
var indexBase = require('*/cartridge/models/product/decorators/index');
и он будет работать отлично.
Если вы хотите расширить класс, просто создайте класс и используйте синтаксис расширения для ES6. Или вы можете использовать прототипное наследование для ES5 medium.com/ecmascript-2015/….