gpt4 book ai didi

javascript - 如何在 Node.js 中使用诸如模块之类的原型(prototype)?

转载 作者:搜寻专家 更新时间:2023-10-31 23:18:52 25 4
gpt4 key购买 nike

我想用原型(prototype)扩展标准对象,例如 String。例如,为数组添加 diff 函数。在 Node.js 中组织代码的好方法是模块,但是如何使用原型(prototype)呢?

例子

Array.prototype.diff = function (a) {
return this.filter(function (i) {
return !(a.indexOf(i) > -1);
});
};

最佳答案

我不能代表 nodejs,但我猜 Mozilla 的 JS 模块是相似的,我曾经遇到过同样的问题。

问题是每个 JS 模块(可能还有 nodejs 模块)都在自己的 JavaScript 上下文中运行,因此来自不同模块的 Array 构造函数(和原型(prototype))是不一样的。它们是完全不同的对象。

我可能会有一个带有辅助函数的模块,可以将相应的更改添加到给定对象。不过,这意味着您必须从每个要使用扩展数组原型(prototype)的模块中调用辅助函数。

ArrayHelperModule:

function extendArray(arrayConstructor)
{
arrayConstructor.prototype.diff = function (a) {
return this.filter(function (i) {
return !(a.indexOf(i) > -1);
});
};
}

exports.extendArray = extendArray;

使用数组的模块:

var ArrayHelperModule = require("ArrayHelperModule");

// extending the Array of this module
ArrayHelperModule.extendArray(Array);

// use it
var diff = [1, 2].diff([1]);

附注希望这样的代码是正确的......我只是在这里快速输入

关于javascript - 如何在 Node.js 中使用诸如模块之类的原型(prototype)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11862971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com