Javascript 在嵌套函数中引用类对象时出现问题
我正在尝试用coffeescript创建一个类,我就快到了。我的问题是,我想为类的整个范围创建几个变量,但是我不知道如何在嵌套函数中找到它们。@相当于“this.”,但是我希望能够从类中的任何位置访问这些构造函数属性 例如:Javascript 在嵌套函数中引用类对象时出现问题,javascript,coffeescript,Javascript,Coffeescript,我正在尝试用coffeescript创建一个类,我就快到了。我的问题是,我想为类的整个范围创建几个变量,但是我不知道如何在嵌套函数中找到它们。@相当于“this.”,但是我希望能够从类中的任何位置访问这些构造函数属性 例如: class CoffeeScriptClass constructor: (@foo) -> _sampleFunction: -> $.each BigArray, (index, NestedArray) -> $.eac
class CoffeeScriptClass
constructor: (@foo) ->
_sampleFunction: ->
$.each BigArray, (index, NestedArray) ->
$.each NestedArray, (index, widget) ->
## I'd like @foo to reference the constructor value
widget = @foo
return
return
return
这有意义吗?我真的在努力保持我的OOJavaScript整洁有序,但我在coffeescript的范围界定部分遇到了困难。我将很高兴地欢迎班上其他同学提出重构/建议。谢谢大家。您需要确定内部功能的范围:
class CoffeeScriptClass
constructor: (@foo) ->
_sampleFunction: ->
$.each BigArray, (index, NestedArray) => // keep parent scope
$.each NestedArray, (index, widget) => // keep parent scope
## I'd like @foo to reference the constructor value
widget = @foo
return
return
return
以下是编译后的JS,说明了这项工作的原因:
var CoffeeScriptClass;
CoffeeScriptClass = (function() {
function CoffeeScriptClass(foo) {
this.foo = foo;
}
CoffeeScriptClass.prototype._sampleFunction = function() {
var _this = this; // reference to the class is maintained
$.each(BigArray, function(index, NestedArray) {
$.each(NestedArray, function(index, widget) {
widget = _this.foo;
});
});
};
return CoffeeScriptClass;
})();
你试过绑定功能了吗?哇,我刚刚在Coffeescript网站上读到了脂肪箭头。这些太棒了。那正是我的问题。