自 jQuery 1.9 起,一个小部件可以从自身继承。我找不到一个真实的例子来说明这个功能有什么用处,而且说实话,从自己继承的想法让我感到困惑。这个特性的目的是什么?使用这个特性,我能做些什么之前做不到或者更加困难的事情?
这是为了重新定义相同的小部件。因此,您可以向其添加新功能,而不需要在另一个对象中扩展它。
在您发送的链接中提供的示例中:
$.widget("ui.dialog", $.ui.dialog, {
close: function() {
if (confirm( "Is it closing time?" )) {
this._super("close");
}
}
});
现在,您可以在不创建新的“不同”小部件对象(“不同”意味着“另一个名称”)的情况下扩展小部件。您可以添加功能并仍然使用完全相同的小部件对象名称。
// An incredibly contrived example
$.widget("ui.dialog", $.ui.dialog, {
close: function() {
if (confirm( "Is it closing time?" )) {
this._super("close");
}
}
});
正如我们在示例中所看到的,我们可以向对话框对象添加一个功能,该功能将出现在已存在的对话框中,即您无需创建新的“extendedDialog”,然后更改现有代码以使用“extendedDialog”对象。相反,包含的功能已经可用并在那里工作。
这使您拥有类别在Objective-C中的类似功能,您可以向一个类(小部件)添加功能,而无需更改类/小部件代码本身,甚至无需访问其源代码。