gpt4 book ai didi

javascript - 使用绑定(bind)原型(prototype)更改 'this' 的范围

转载 作者:行者123 更新时间:2023-11-29 17:22:44 24 4
gpt4 key购买 nike

我正在使用绑定(bind)来更改“this”的范围,以便我能够在我的点击函数中使用“this”引用我的 generateContent 函数。不幸的是,这意味着 this.id 不再有效,因为“this”的范围已更改。

在这种情况下,获取单击按钮的 id 的最佳方法是什么:

function help( doc ) {

buttons: function() {

$('.add-btn').click( function() {

this.generateContent( this.id ) );

}.bind(this));

},

generateContent: function ( id ){

}

}

// This function binds a function to an object's scope.
Function.prototype.bind = function(scope) {
var _function = this;
return function() {
return _function.apply(scope, arguments);
}
}

最佳答案

你没有标记 jQuery,但你的代码像 jQuery 一样嘎嘎作响,所以我假设是 jQuery。

jQuery 提供 event.currentTarget :

$('.add-btn').click( function(e) {
this.generateContent( e.currentTarget.id ) ;
}.bind(this));

顺便说一句,Function.prototype.bind 是原生存在的,在原生版本可用的情况下,您不想覆盖它。 jQuery 还提供了 $.proxy,因此您在任何情况下都不需要它。

See demo

关于javascript - 使用绑定(bind)原型(prototype)更改 'this' 的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11614187/

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