javascript - 如何将闭包与函数指针一起使用?

标签 javascript closures

我的目标是在编写干净代码的同时使用闭包。我注意到的一件事是,不知何故我总是重复自己,因为在不止一种情况下需要我的一个匿名函数。

为了这个目标,我想将这些重复的函数存储在一个对象中,我以后可以重用。

现在,回答我的问题。我创建了这个例子 http://jsfiddle.net/tiagoespinha/tTx64/并且警报不会触发,因为 y 为空。

但是,如果我内联函数,一切正常 http://jsfiddle.net/tiagoespinha/tTx64/1/

有解决这个问题的技巧吗?我怎样才能让它在第一个例子中工作?变量y还在,为什么JS抓不到?

最佳答案

您希望对象具有自己的变量 (y) 和共享函数。

您真正需要的可能是原型(prototype)。

function Holder() {
   this.y = 5;
   this.myFn();
}
Holder.prototype.myFn = function() {
    alert("The value of the closure var is " + this.y);           
}
new Holder();

我建议阅读 Introduction to Object-Oriented JavaScript这样您就不会尝试仅使用闭包来重建 OOP。

关于javascript - 如何将闭包与函数指针一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13549960/

相关文章:

javascript - 上传图片时如何传递参数?

javascript - 修复此 Javascript 闭包的正确方法是什么

python - lambda 函数的内存地址

javascript - 为什么 postMessage() 只给我最后一个 DOM 的信息?

javascript - 使用 angular-fullstack 生成器时,在后端访问环境变量的最佳方法是什么?

javascript - 为什么我无法在 Backbone 中触发成功回调?

javascript - 如何在加载 iframe 内容后立即运行函数?

javascript - 按 div 高度(不是项目)的 jQuery 分页

javascript - 如何使用下划线返回对象作为 groupby 函数中的键

rust - 除了在每次关闭之前克隆它之外,还有其他选择可以在多个关闭中共享 Arc 吗?