В виджетах я пытаюсь вызвать функцию из свойства в параметрах
getThing: this._runFunc()
но я получаю сообщение об ошибке: _runFunc() не является экземпляром объекта? вы можете помочь?
$.widget('my.testW', {
options:{
buttons:buttons,
getThing: this._runFunc() // why wont _runFunc work?
},
_create: function () {
//do things
var s = this.options.getThing;
},
_runFunc: function (){
return 'hello world'
}
});
В $.widget
вызова, то options
объекта и анонимный литерал объекта, в котором он содержится только параметры в $.widget
, так this
относится к тому, что this
было за пределами $.widget
вызова, а не только что определенный виджет.
AFAIK, нет способа ссылаться на какой-либо другой элемент из того же анонимного литерала объекта из значений этого литерала.
Если вы хотите скрыть свою функцию, вы можете определить свой виджет таким образом:
(function() {
function _runFunc() {
return 'hello world';
};
$.widget(..., {
options: {
getThing: _runFunc()
},
_runFunc: _runFunc; // if you want to expose this method
});
})();
где IIFE включает функцию полезности в пределах этой области.