gpt4 book ai didi

javascript - 在 Backbone.js 中将函数设置为属性给我一个错误,但如果我在初始化方法中设置它,它就会工作

转载 作者:行者123 更新时间:2023-11-30 13:20:06 25 4
gpt4 key购买 nike

    ,debouncedAjax: _.debounce(_.bind(myFunction, this), 2000)

,request: function(requestParams, response){
this.debouncedAjax(requestParams, response);
}

当我可以请求时,我得到这个

Uncaught TypeError: Cannot call method 'apply' of undefined (anonymous function)

如果我像这样在 debouncedAjax 属性上设置去抖动函数的结果

    ,initialize: function() {               
this.debouncedAjax = _.debounce(this.imoveisAjaxRequest, 2000);
}

工作正常!

为什么?

顺便说一句:debounce 是 AMAZING underscore.js 框架中的一个函数!

最佳答案

Javascript 中有很多东西,归结为 this 指针的含义。

首先,您可能要定义一个类原型(prototype)。如果不是明确的,那么在 Backbone.something.extend() 调用中,这是同一件事。此时,您正在使用 _.bind(myFunction, this) 绑定(bind)一个函数。那么此时 this 指针指的是什么?它肯定不是该对象的任何特定实例,因为它们尚未创建。它可能是 window 或 Backbone 框架中的东西。

当您在 initialize 函数中调用该函数时,this 指针表示您想要的,因此一切都会按照您的意愿进行。

关于javascript - 在 Backbone.js 中将函数设置为属性给我一个错误,但如果我在初始化方法中设置它,它就会工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10526493/

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