扩展 JavaScript 库的最佳方式?

Best Way to Extend a JavaScript Library?

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

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

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

浏览器

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

示例:

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

        // Rest of your code
</script>

Node.js

如果您的目标是 Node.js,或者浏览器通过类似 Browserify 的东西与相同的 module-based 组织一起工作,一种方法是创建您自己的修补模块来修补库对象,然后将其传回。然后你需要这个模块而不是普通的模块。

更多信息:Monkey Patching in Node.js

示例:

myPatchedBucketJS/index.js

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

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

module.exports = bucket;

main.js

var bucket = require('myPatchedBucketJS');