gpt4 book ai didi

javascript - 将作用域绑定(bind)到函数调用之外的函数

转载 作者:行者123 更新时间:2023-11-29 21:49:11 27 4
gpt4 key购买 nike

一个例子:

var MyClass = (function () {
function MyClass() {
// construct
}

MyClass.prototype.clickEvent = function() {
this.doSomething();
};

MyClass.prototype.doSomething = function() {
// do something here
};

return MyClass;
})();

var mc = new MyClass();
$('my-ele').click(mc.clickEvent.bind(mc));

我需要将 mc 绑定(bind)到 mc.clickEvent 才能完成这项工作。还有另一种方法吗?它工作正常,如果有一种方法可以定义我的 clickEvent() 函数的范围,而无需在设置点击事件函数时附加 .bind(mc),那就太好了。

我看到了这样的东西:

MyClass.prototype.clickEvent = function() {
this.doSomething();
}.bind(this);

但这没有用。

最佳答案

var MyClass = (function () {
function MyClass() {
this.clickEvent = this.clickEvent.bind(this);
}

MyClass.prototype.clickEvent = function() {
this.doSomething();
};

MyClass.prototype.doSomething = function() {
alert('something');
};

return MyClass;
})();

var mc = new MyClass();
$('.my-ele').click(mc.clickEvent);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


<a href=#" class="my-ele">test</a>

这样做是为了绑定(bind)它的所有类方法。

function MyClass() {
for (var i in this) {
if (typeof this[i] === 'function') {
this[i] = this[i].bind(this);
}
}
}

关于javascript - 将作用域绑定(bind)到函数调用之外的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30009120/

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