我为可读性编写了一个小例子。我试图了解正确的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();
愚蠢的例子,但我试图了解应用程序应该如何流动。我是否应该能够在单独但链接的函数中编写我的整个应用程序,然后通过实例化构造函数来完成所有操作,并且可能调用一个函数。或者第一个例子更正确 - 编写独立函数,然后在实例化构造函数后处理它们之间的交互?
感谢您的帮助。
答案 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
。这将使其静态并防止与构造函数值冲突。