Coffeescript 为什么“this”要绑在窗户上?

Coffeescript 为什么“this”要绑在窗户上?,coffeescript,Coffeescript,我需要在单击后获取href值。我的代码如下所示: $('.menu a').click (event) => event.preventDefault() console.log($(this).attr('href')) # it returns 'undefined' 我做错了什么 [已编辑] 我的html代码: <div class="menu"> <a href="/all/">All</a> </div> 这是

我需要在单击后获取href值。我的代码如下所示:

$('.menu a').click (event) =>
  event.preventDefault()
  console.log($(this).attr('href')) # it returns 'undefined'
我做错了什么

[已编辑]

我的html代码:

<div class="menu">
    <a href="/all/">All</a>
</div>


这是因为
=>
->
之间的咖啡脚本有细微的差别

在JavaScript中,this关键字的作用域是动态的,表示 当前函数附加到的对象。如果你通过考试 函数作为回调函数或将其附加到另一个对象 它的原始价值将丢失。如果你不熟悉这个 行为,提供了一个很好的概述 怪癖

胖箭头=>可用于定义函数和绑定函数 到该的当前值,即现场。这在以下情况下很有用: 使用基于回调的库(如Prototype或jQuery)创建 要传递给每个的迭代器函数,或要使用的事件处理程序函数 带着束缚。使用fat箭头创建的函数可以访问 在定义它们的地方,这个函数的属性

这就是为什么
绑定到窗口的原因

你应使用:

$('.menu a').click (event) ->
  event.preventDefault()
  console.log($(this).attr('href')) # it returns the link !

元素是否有
href
属性?我想是的!我编辑了我的帖子。我不太熟悉CoffeeScript,但是当我添加
console.log($(此))
时,它记录的是
窗口,而不是我单击的
a
元素。感谢帮助:)这是CoffeeScript方法箭头的问题!:)