扩展 JavaScript 库的最佳方式?

Toa*_*ter 5 javascript node.js javascript-objects

在使用 Python 工作了很长时间后,我又回到了 JavaScript,所以我忘记了一些 Javascript 最佳实践。

我想使用预定义的数据结构,例如bucket-js提供的数据结构。但是,我注意到bucket-js 并没有为其对象提供很多toString() 方法;所以我想提供我自己的方法。

扩展这种类型的库对象以便扩展在我的整个项目中可用,但不涉及对库源代码进行更改的最佳方法是什么?

lle*_*aff 3

浏览器

如果您的目标环境是浏览器,则只需将扩展库对象的代码放在其余代码之上即可。

例子:

<script src="bucket-js"></script>
<script>
        buckets.Set.prototype.toString = function() {
            //...
        }

        // Rest of your code
</script>
Run Code Online (Sandbox Code Playgroud)

Node.js

如果您的目标是 Node.js 或通过Browserify等与相同的基于模块的组织一起工作的浏览器,一种方法是创建您自己的修补模块,该模块修补库对象,然后将其传回。然后您需要这个模块而不是普通模块。

更多信息:Node.js 中的 Monkey 修补。

例子:

myPatchedBucketJS/index.js

var bucket = require('bucket-js');

buckets.Set.prototype.toString = function() {
    //...
}

module.exports = bucket;
Run Code Online (Sandbox Code Playgroud)

main.js

var bucket = require('myPatchedBucketJS');
Run Code Online (Sandbox Code Playgroud)