aw *_*rud 1 javascript jquery object prototypal-inheritance
我正在尝试在Javascript中使用原型继承.下面我的代码的问题是,当单击按钮并被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'));
});
Run Code Online (Sandbox Code Playgroud)
这只是我用来学习原型继承的一个非常愚蠢的例子.我意识到上面代码的实际功能可以简单地在jQuery中完成,或者我可以使用对象文字或模块模式 - 但我真的只是对学习原型继承而不是在此时实现特定函数感兴趣.
有多种方法可以保留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
});
};
Run Code Online (Sandbox Code Playgroud)