我的目标是在编写干净代码的同时使用闭包。我注意到的一件事是,不知何故我总是重复自己,因为在不止一种情况下需要我的一个匿名函数。
为了这个目标,我想将这些重复的函数存储在一个对象中,我以后可以重用。
现在,回答我的问题。我创建了这个例子 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/