В следующем коде, .refresh
можно назвать .add
, но я получаю Uncaught TypeError: undefined is not a function
Я думаю, потому что она не определена в момент создания класса, но если это правда, без повторения кода, есть способ вызова sibling public function из того же класса?Как я могу назвать функции sibling в одноэлементном классе?
var fileSelector = (function() {
var self = this;
function callback (data,status,xhr) {
$("#File_Selector_Container").html(data);
utils.setItem ("fileSelector", "TRUE");
}
return {
refresh : function() {
if (utils.getItem ("fileSelector") == "TRUE") {
self.add();
}
},
add : function() {
$.get(script_name ,"AddFileSelector",callback,"html");
},
remove : function() {
$("#File_Selector_Container").html("");
}
}
})();
Я начал это с: Simplest/Cleanest way to implement singleton in JavaScript? и я не могу найти его сейчас, но другой вопрос, где я получил self=this
от.
Try 'this.add()' ' – Barmar
this' (и, следовательно,' self') просто относится к глобальный объект (т.е. «окно»). Вот почему вы получаете ошибку, нет глобальной функции 'add'. Я рекомендую прочитать [документацию MDN] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this), чтобы узнать, как это работает. –
this.add() сделал работу, однако, глядя на 2-е предложение ....... – Quade2002