诚然,我对 javascript 的内部工作原理知之甚少,但需要制作一个库并想学习(因此在这里询问)。我理解使用闭包并导出到窗口不会污染全局命名空间,但除此之外它让我有点困惑。
(function() {
var Drop = window.Drop = function() {
var files = [];
var add = function(word) {
files.push(word);
return files;
}
return {
files: files,
add: add
}
}
})()
// All of these seem to be the same?
var a = Drop();
var b = new Drop();
var c = new Drop;
// Each has their own state which is what I want.
a.add("file1");
b.add("file2");
c.add("file3");
- 为什么三种“初始化”Drop的方式都一样?
- 究竟是什么让他们有能力拥有自己的状态?
- 是否有替代返回语法的方法来在 Drop 上导出这些函数?
- 是否有一种更好的最佳实践方式来创建这样的自包含库?
我在网上搜索过,但在这个主题上几乎没有一致性。