首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript中的助手函数推荐的方法是什么?

JavaScript中的助手函数推荐的方法是什么?
EN

Software Engineering用户
提问于 2014-04-10 17:11:47
回答 2查看 18.7K关注 0票数 11

辅助函数的推荐方法是什么?我想选择一种技术,并运行它来创建我的新“类”。

下面是我考虑过的设计方案:

选项1:外部作用域中的助手函数,使用实例

上下文进行调用

代码语言:javascript
复制
function createPane (pane) {
    // logic to create pane
    var proto = Object.create(this.paneList);
    $.extend(paneProto, pane);
    return paneProto;
}

Panes.prototype.initialize = function (panes) {
    var _this = this;
    _.each(panes, function () {
        _this.panes.push(createPane.call(_this, this));
    });
}
  • 优点:简单的语法。createPane不在实例上发布。
  • 缺点:createPane可以在其他作用域中访问。

选项2:闭包中的助手函数,使用实例

的上下文调用

代码语言:javascript
复制
Panes.prototype.initialize = (function () {

    function createPane (pane) {
        // same logic as last createPane
    }

    return function (panes) {
        // same logic as before - calls createPane
    }

})();
  • 优点:createPane不在实例上发布。
  • 缺点:可读性和可测试性较低;必须在初始化范围内对此助手进行测试。

选项3: Prepend _ to name,用于指示私有方法

代码语言:javascript
复制
Panes.prototype._createPane = function (pane) {
    // same logic as last createPane
}

Panes.prototype.initialize = function (panes) {
    // same logic as last, except calls this._createPane
}
  • 优点:_createPane的隐式上下文就是实例。外部可测试性。
  • 缺点:在实例上公开助手函数。

选项4:帮助函数作为参数

代码语言:javascript
复制
Panes.prototype.initialize = (function (createPane) {

    return function (panes) {
        // same logic as before - calls createPane
    }

})(function createPane () {
   // same logic as last createPane
});
  • 优点:createPane不在实例上发布。助手函数之间缺乏访问权限。
  • 缺点:可读性和可测试性较低;必须在初始化范围内对此助手进行测试。
EN

回答 2

Software Engineering用户

发布于 2014-04-10 18:25:10

首先,JavaScript没有类。

第二,在我看来,您的第三个选项似乎更合理,但它也很大程度上取决于您的需求。此外,您不应该太担心公开助手函数。对我来说,解决方案的好处完全是妥协的理由。

第三,作为一名开发人员,您的时间是宝贵的;不要让琐碎的任务很难实现,耗费时间和更多地处理人为错误。源代码的简单性本身就是一个很好的特性。

票数 5
EN

Software Engineering用户

发布于 2014-07-28 06:17:01

静力学属于函数IMO,在你的情况下,你有一个私人的静态,所以.

代码语言:javascript
复制
Panes._createPane=function(pane){}
票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/235555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档