Javascript 继承 - this.element 在子类中未定义
我正在尝试设置一个扩展子类的父类,但是每当我尝试在从超类调用时在子类中引用 this.element 时,它都是未定义的。我在这里做错了什么?
$.widget("ui.testSuper", $.extend({}, $.ui.testSub.prototype,
{
_init: function ()
{
$.ui.testSub.prototype._init();
},
...
}));
$.widget("ui.testSub", $.ui.mouse,
{
_init: function ()
{
this.element.addClass("some-class");
},
...
});
$('#some-element').testSub({ }); // this works fine
$('#some-element').testSuper({ }); // this.element is undefined
I'm trying to set up a parent class that extends a subclass, but whenever I attempt to reference this.element in the subclass when called from the superclass, it's undefined. What am I doing wrong here?
$.widget("ui.testSuper", $.extend({}, $.ui.testSub.prototype,
{
_init: function ()
{
$.ui.testSub.prototype._init();
},
...
}));
$.widget("ui.testSub", $.ui.mouse,
{
_init: function ()
{
this.element.addClass("some-class");
},
...
});
$('#some-element').testSub({ }); // this works fine
$('#some-element').testSuper({ }); // this.element is undefined
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
当您扩展
$.ui.testSub
时,它此时并不存在。您所需要做的就是交换这两个代码块:请参阅此处
更新的 实时示例
我明白你在说什么。您需要像这样调用基本方法
,这样您就不会丢失元素的上下文。示例是此处
When you extend
$.ui.testSub
it doesn't exists at those point. All you need to do is to swap those two blocks of code:See live example here
UPDATE
I got what you're saying. You need to call base method like this
So you will not loose the context of your element. Example is here
我不确定使用 $.extend 是否是这里的方法。
以下是我通常扩展 jQuery UI 小部件的方式:
我看到您正在使用 _init,因此必须使用旧版本的 jQuery UI。
I'm not sure if using $.extend is the way to go here.
Here's how I typically extend jQuery UI widgets:
I see you are using _init, so must be using an older version of jQuery UI.