gpt4 book ai didi

javascript - 用作事件处理程序的 Javascript 原型(prototype)函数内部 'this' 的值

转载 作者:行者123 更新时间:2023-11-30 09:07:53 24 4
gpt4 key购买 nike

我正在尝试在 Javascript 中使用原型(prototype)继承。我下面的代码的问题是,当单击按钮并调用 MyNamespace.MyObj.myEventHandler 时,this 的值不是 MyNamespace 的实例。 MyObj,而是被点击的按钮。

我是不是结构有误(有没有更好的方法)?我能以某种方式确保 this 是对象的实例而不是调用者按钮吗?

var MyNamespace.MyObj = function(myform) {
this.myform = myform;
jQuery('.mybutton', this.myform).click(this.myEventHandler);
};

MyNamespace.MyObj.prototype = {
myEventHandler: function() {
this.myform.get(0).submit();
}
};

jQuery(document).ready(function() {
new MyNamespace.MyObj(jQuery('#myform'));
});

这只是一个非常简单的例子,我用它来学习原型(prototype)继承。我意识到上面代码的实际功能可以简单地在 jQuery 中完成,或者我可以使用对象文字或模块模式——但我真的只对学习原型(prototype)继承感兴趣,而不是此时实现特定功能.

最佳答案

有多种方法可以保留this值,最简单的IMO是:

var MyNamespace.MyObj = function(myform) {
var instance = this; // store `this`
this.myform = myform;
jQuery('.mybutton', this.myform).click(function () {
instance.myEventHandler(); // use the stored value
});
};

关于javascript - 用作事件处理程序的 Javascript 原型(prototype)函数内部 'this' 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3310382/

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