我一直在苦恼一个 JavaScript 问题,但是我在网上找不到解释。我猜这是因为我没有输入正确的关键词,这也可能是我为什么一直苦恼的原因。
我的基本假设是可以修改对象:
> var x = {'n': 2};
> x['n']
2
> x['n'] = 3;
3
哎呀,这个可行。但是要记住(函数也是对象):
> var addn = function(a) {
var n = 2;
return n + a;
}
> addn(3);
5
> addn['n'] = 3;
3
> addn(3);
5
这一次我无法改变 'n'。有没有办法在保持函数式风格的同时修复这个问题?而不是完全使用面向对象编程。我还有一个相关的问题,如何维护函数的依赖关系,例如测试,但不使用面向对象方式?当然,我正在寻找解决方案,但如果可能的话,我也想了解JavaScript中哪个机制使我感到困扰。谢谢,
马克
免责声明: 提及面向对象编程时,我并不打算反对面向对象编程。我也不打算反对VI或Emacs。如果我有些话使你不舒服,请跳过此内容。
addn['n']
返回的是3
吗? - D.Shawley