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
循环?