Javascript objects? Ребята вопрос в студию! ;)var test = { getText: function(some) { }, otherSome: function(someOther) { this.getText(); // Не работает test.getText(); // Работает } } Почему так? ЗЫ. А как реализовать такую штуку...? Та которая не работает...
В функции otherSome метод getText вызывается как this.getText(), что означает, что обращение происходит к методу объекта, на котором была вызвана функция. Однако, в данном случае внутри функции otherSomethis указывает на объект test, а метод getText находится внутри объекта test, поэтому его нужно вызывать через объект test.
Для того чтобы реализовать вызов метода getText внутри функции otherSome через this, можно использовать стрелочную функцию, которая сохранит контекст выполнения:
var test = { getText: function(some) { }, otherSome: function(someOther) { (() => this.getText())(); // Работает test.getText(); // Работает } }
Теперь вызов this.getText() внутри функции otherSome будет работать, потому что стрелочная функция сохраняет контекст выполнения.
В функции otherSome метод getText вызывается как this.getText(), что означает, что обращение происходит к методу объекта, на котором была вызвана функция. Однако, в данном случае внутри функции otherSomethis указывает на объект test, а метод getText находится внутри объекта test, поэтому его нужно вызывать через объект test.
Для того чтобы реализовать вызов метода getText внутри функции otherSome через this, можно использовать стрелочную функцию, которая сохранит контекст выполнения:
var test = {getText: function(some) {
},
otherSome: function(someOther) {
(() => this.getText())(); // Работает
test.getText(); // Работает
}
}
Теперь вызов this.getText() внутри функции otherSome будет работать, потому что стрелочная функция сохраняет контекст выполнения.