【发布时间】:2014-03-17 17:36:11
【问题描述】:
如何通过闭包访问 funcB 中的变量“e”?
<!DOCTYPE HTML>
<html>
<head>
<script>
Test = function () {};
Test.prototype.funcA = function (k) {
var that = this;
return function(e) {
window.console.log('k: ' + k); // 'abc'
window.console.log('e: ' + e); // 'def'
that.funcB(k);
};
};
Test.prototype.funcB = function (p) {
window.console.log('p: ' + p); // 'abc'
window.console.log('e: ' + e); // undefined (why?)
}
obj = new Test();
(obj.funcA('abc'))('def');
</script>
</head>
<body>
</body>
</html>
我对关闭感到困惑。
既然funcA中存在变量e(打印'def'),为什么funcB是由funcA执行的,所以funcB不能访问它?如何让 funcB 访问变量 e?
我希望变量 e 可以通过闭包访问。我不想将它存储在实例化对象上(我知道我可以这样做)。
【问题讨论】:
标签: javascript closures prototype