【问题标题】:Best Way to Extend a JavaScript Library?扩展 JavaScript 库的最佳方式?
【发布时间】:2016-04-03 10:37:31
【问题描述】:

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

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

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

【问题讨论】:

    标签: javascript node.js javascript-objects


    【解决方案1】:

    浏览器

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

    示例:

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

    Node.js

    如果您的目标是 Node.js,或者通过 Browserify 之类的浏览器与相同的基于模块的组织一起使用,一种方法是创建您自己的修补模块来修补库对象,然后将其传回。然后你需要这个模块而不是原版的。

    更多信息: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');
    

    【讨论】:

    • 谢谢!这看起来与我需要知道的完全一样。顺便说一句,我正在使用 Node.js。
    • 很好,Node.js 是未来。 :-)
    猜你喜欢
    • 2016-01-26
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-12
    • 2012-10-05
    • 2018-10-05
    相关资源
    最近更新 更多