Это обсуждается здесь: https://api.jqueryui.com/jQuery.widget/#method -_ super
Вызывает метод с тем же именем из родительского виджета с любыми указанными аргументами. По существу .call()
.
args От нуля до многих аргументов для передачи методу родительского виджета.
_setOption: function( key, value ) {
if ( key === "title" ) {
this.element.find( "h3" ).text( value );
}
this._super( key, value );
}
Так что он уже вызывает _create
в вашем первом примере, поэтому теперь вы посылаете "_create" в качестве аргумента this._create()
и на самом деле ничего не делаете.
Копая глубже, мы видим: https://learn.jquery.com/jquery-ui/widget-factory/extending-widgets/
_super()
и _superApply()
вызывают методы с тем же именем в родительском виджете. Обратитесь к следующему примеру. Как и предыдущий, этот пример также переопределяет метод open()
, чтобы регистрировать «open». Однако на этот раз _super()
запускается, чтобы вызвать диалоговое окно open()
и открыть диалоговое окно.
$.widget( "custom.superDialog", $.ui.dialog, {
open: function() {
console.log( "open" );
// Invoke the parent widget's open().
return this._super();
}
});
$( "<div>" ).superDialog();
Ваш первый виджет не мутирует, поэтому не уверен, что вам нужно вызвать _super()
, В вашей мутации вам не нужно отправлять аргумент в _create()
. Вы можете для другого.
$.widget( "namespace.Bar", $.namespace.Foo, {
_create: function () {
this._super();
},
myFunction: function(param1) {
this._super(param1);
}
});