正确的JavaScript应用程序结构

时间:2014-04-16 19:49:05

标签: javascript structure

我为可读性编写了一个小例子。我试图了解正确的js app结构。

我刚开始编写更大的js应用程序。现在,我有一个构造函数和一大堆原型函数。我一直认为你不应该从一个函数调用(或返回)到另一个函数。但是现在,在我的应用程序的底部,我正在实例化我的构造函数,然后必须调用一堆函数,以及构建条件语句来处理执行,这似乎完全错误。

这是我一直在做的主意:

function TodaysFood(b, l) 
{
    this.breakfast = b;
    this.lunch = l;
}

TodaysFood.prototype.firstMeal = function()
{
    return console.log(this.breakfast);
}

TodaysFood.prototype.secondMeal = function()
{
    return console.log(this.lunch);
}   

var app = new TodaysFood("eggs", "sandwich");

app.firstMeal();
app.secondMeal();

我想知道这个功能“链接”是否合适?

function TodaysFood(b, l) 
{
    this.breakfast = b;
    this.lunch = l;
}

TodaysFood.prototype.firstMeal = function()
{
    return this.secondMeal(this.breakfast);
}

TodaysFood.prototype.secondMeal = function(firstMeal)
{
    var twoMeals = [firstMeal, this.lunch];
    return this.whatIAte(twoMeals);
}

TodaysFood.prototype.whatIAte = function(twoMeals)
{
    return console.log(twoMeals);
}


var app = new TodaysFood("eggs", "sandwich");

app.firstMeal();

愚蠢的例子,但我试图了解应用程序应该如何流动。我是否应该能够在单独但链接的函数中编写我的整个应用程序,然后通过实例化构造函数来完成所有操作,并且可能调用一个函数。或者第一个例子更正确 - 编写独立函数,然后在实例化构造函数后处理它们之间的交互?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您可能希望使用RequireJS

将其设为模块化,Ala Node.js或在浏览器中

以下是您可以考虑的第二个示例的略微变化,view fiddle

var TodaysFood = function (b, l) {
    var self = this;
    this.breakfast = b;
    this.lunch = l;

    this.firstMeal = function () {
        console.log(this.breakfast);
        return self;
    };

    this.secondMeal = function () {
        console.log(this.lunch);
        return self;
    }

    this.allMeals = function () {
        return this.firstMeal().secondMeal();
    };
}

var food = new TodaysFood('eggs', 'sandwich');
food.firstMeal().secondMeal().allMeals();

如果您计划使用node.js或RequireJS,则可以通过将最后两行代码替换为

来模块化上述内容。

module.exports = TodaysFood;

如果这是模块化的,那么你将删除构造函数var TodaysFood = function(b, l) { ...,而是接受b&的参数。在您的个人方法中l,例如firstMeal& secondMeal。这将使其静态并防止与构造函数值冲突。