gpt4 book ai didi

javascript - 从另一个对象的方法调用一个对象的原型(prototype)方法

转载 作者:行者123 更新时间:2023-12-03 09:56:47 24 4
gpt4 key购买 nike

我正在尝试创建一个简单的回调系统,该系统会在按下按钮时触发。回调不是工厂函数,而是不同对象的原型(prototype)方法。我已经让它工作了,但我不明白。为什么我需要使用 .bind(object) 来让对象触发其方法?本来我尝试了no bind,然后bind(this),都失败了。

function Bar() {}

Bar.prototype = {
getStuff: function () {
return "Hello";
},

setStuff: function () {
console.log( this.getStuff() );
}
}

function Foo() {
this.afterSubmit = null;
var self = this;
$('button').click(function () {
self.submit()
});
return this;
}

Foo.prototype = {
submit: function () {
if (this.afterSubmit !== null) {
this.afterSubmit();
}
$('#msg').append('clicked ');
return this;
},

setAfterSubmit: function (callback) {
this.afterSubmit = callback;
return this;
}
}

var bar = new Bar();
var foo = new Foo().setAfterSubmit(bar.setStuff.bind(bar));
// Why do I need to bind bar ?

请看看我的 fiddle https://jsfiddle.net/j5qfuzna/

最佳答案

this.afterSubmit();

这是设置 Foo 实例的上下文。将其绑定(bind)到 Bar 实例可以防止这种情况发生。

关于javascript - 从另一个对象的方法调用一个对象的原型(prototype)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30711988/

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