gpt4 book ai didi

javascript - CoffeeScript 中的类指针?

转载 作者:行者123 更新时间:2023-11-30 09:01:05 25 4
gpt4 key购买 nike

试图找出如何在 CoffeeScript 中编写以下内容:

var foo = new function()
{

var $this = this;

$("#foo").click( this.clicked );

this.clicked = function()
{
$this.alert( $(this).text() );
};

this.alert = function(message)
{
alert(message);
};

};

不幸的是,我终生无法弄清楚如何在 CoffeeScript 中访问类指针,“this”显然不是上下文感知的,通常只会指向被调用者传递的变量。所以我没办法用 CoffeeScript 写上面的脚本。

有什么建议吗?我在文档中找不到任何有用的东西,你有 @ 指针,但它们也只是使用当前上下文中的“this”指针,使其无用..

最佳答案

可以在构造函数中直接在@中添加方法,达到同样的效果:

class C
constructor: ->
$this = @
@clicked = ->
console.log @
$this.alert 'pancakes'
alert: (m) ->
console.log m

c = new C
c.clicked()
c.clicked.call window​​​​​

演示:http://jsfiddle.net/ambiguous/Y8ZBe/

您通常可以使用 bound method以及在这种情况下的“事件”参数:

class C
clicked: (ev) =>
@alert(ev.target.value)
alert: (m) ->
console.log m

c = new C
c.clicked(target: { value: 'pancakes' })
c.clicked.call window, target: { value: 'pancakes' }

这种事情通常出现在 jQuery(或类似)回调中,它们通常有一个事件参数,它明确标识目标“this”,以便您可以使用绑定(bind)函数。

演示:http://jsfiddle.net/ambiguous/LafV2/

关于javascript - CoffeeScript 中的类指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9263865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com