如何通过自定义构造函数扩展Node JS中的类?

时间:2019-06-13 10:46:59

标签: javascript node.js model-view-controller model salesforce-commerce-cloud

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,但是此代码是为Salesforce B2C Commerce中的SFRA编写的。

1 个答案:

答案 0 :(得分:0)

您需要做的只是在index.js文件中

var indexBase = module.superModule;

代替:

var indexBase = require('*/cartridge/models/product/decorators/index');

它将完全正常工作。