Javascript foreach循环,链接到';这';咖啡脚本

Javascript foreach循环,链接到';这';咖啡脚本,javascript,coffeescript,Javascript,Coffeescript,有以下代码: User.prototype.convertFromPermissionsToScopes = -> this.scopes = {} scopesNames = ['create', 'delete', 'update', 'show'] for groupName of this.permissions this.scopes[groupName] = {} scopesNames.forEach (scopeName)

有以下代码:

  User.prototype.convertFromPermissionsToScopes = ->
    this.scopes = {}
    scopesNames = ['create', 'delete', 'update', 'show']
    for groupName of this.permissions
      this.scopes[groupName] = {}
      scopesNames.forEach (scopeName) ->
        this.scopes[groupName][scopeName] = this.permissions[groupName].indexOf(scopeName) isnt -1
我在最后一行得到错误“this.scopes未定义”。我怎样才能修好它?谢谢

用于将外部
传递到
forEach的上下文中:

scopesNames.forEach (scopeName) =>
这将确保将外部范围传递给方法的上下文


只需一个旁注,您可以对
原型使用
,对
此使用

User::convertFromPermissionsToScopes = ->
  @scopes = {}
  scopesNames = ['create', 'delete', 'update', 'show']
  for groupName of @permissions
    @scopes[groupName] = {}
    scopesNames.forEach (scopeName) =>
      @scopes[groupName][scopeName] = @permissions[groupName].indexOf(scopeName) isnt -1

我猜(没有用过咖啡,但它有多不同)是
当您将它传递到
forEach
时,它会改变上下文。您需要保存对它的引用,并改用它。人们通常使用
self
\u这
。为什么要使用
forEach
调用而不是简单的
for of
循环?