从jQuery 1.9开始,a widget can inherit from itself。我无法找到一个真实世界的例子,说明为什么这会有用,坦率地说,继承自己的想法打破了我的大脑。这个功能的目的是什么?使用此功能我可以做些什么,以前我不能做,或者以前会更难?
答案 0 :(得分:2)
原因是要重新定义相同的小部件。因此,您需要为其添加新功能,而不需要将其扩展到另一个对象中。
在您发送的链接中显示的示例中:
$.widget("ui.dialog", $.ui.dialog, {
close: function() {
if (confirm( "Is it closing time?" )) {
this._super("close");
}
}
});
执行上面的代码后,当用户点击关闭按钮时,每个创建的对话框都会弹出一条确认消息,如果他/她接受了它,它将关闭。
答案 1 :(得分:1)
据说in the slide you linked us,“这是扩展小部件的理想方式”。
现在,您可以扩展窗口小部件,而无需创建新的“不同”窗口小部件对象(“不同”表示“其他名称”)。您可以添加功能并仍使用完全相同的窗口小部件对象名称。
// An incredibly contrived example
$.widget("ui.dialog", $.ui.dialog, {
close: function() {
if (confirm( "Is it closing time?" )) {
this._super("close");
}
}
});
正如我们在示例中所看到的,我们可以向对话框对象添加一个功能,该功能将出现在已存在的对话框中,即,您不需要创建新的“extendedDialog”,然后将现有代码更改为使用“extendedDialog”对象。相反,包含的功能将已经可用并在那里工作。
答案 2 :(得分:1)
这为您提供了类似于objective-c中类别的功能,您可以向类(小部件)添加功能,而无需更改类/小部件代码本身,甚至可以访问它的源代码。