【发布时间】:2017-03-23 22:21:25
【问题描述】:
因此,作为一项工作要求,我们的代码不能超过 80 列和 250 行。这意味着我必须回去将我的代码分解成更小的文件,并且我正在探索一些选项。首先想到的是 prototyping 和 JavaScript,因为我无法安装 RequireJS。其次,我的应用程序使用了闭包。我的问题是:你能把原型做成一个闭包吗?下面的例子。
文件 #1
var app = (function () {
var _userName = "Steve";
function sayHello() {
return "Hello " + _userName;
}
return {
sayHello: sayHello
}
})();
文件 #2
app.prototype.sayGoodbye = function() {
return "Goodbye " + _userName;
};
输出
app.sayHello(); // should output "Hello Steve"
app.sayGoodbye(); // should output "Goodbye Steve"
但这似乎不起作用,因为 sayGoodbye() 函数不包含在闭包中。但是,如果告诉sayHello() 函数使用sayGoodbye(),那也不起作用。关于如何跨多个文件构造闭包对象的任何建议?谢谢!
【问题讨论】:
-
你的问题是
var app;没有返回应用对象来做原型 -
那么,如果我做了
(function app () { ... })();然后将其分配给一个变量,那会成功吗? -
等一下,我正在写答案
-
不,这与原型无关。绝对没有。忘记他们。
标签: javascript closures