Добрый день. Никак не могу разобраться с Object и хэшем в Javascirpt.
Есть объект с конструктором такого вида:
const FirstObject = function () {
// somedata
}
У него есть метод, который для примера просто выводит в лог текст.
FirstObject.prototype.text = function () {
console.log('some text');
}
Второй объект с конструктором такого вида (создание хэша и заполнение его экземплярами FirstObject):
const SecondObject = function () {
this.somedata = {};
this.somedata[0] = new FirstObject();
this.somedata[1] = new FirstObject();
// ...
}
У него есть метод перебора хэша и запуска метода объекта FirstObject.
SecondObject.prototype.sendtext = function () {
Object.keys(this.somedata).map(function (key, index) {
this.somedata[key].text();
});
}
Однако, при запуске sendtext, получаю ошибку:
Uncaught TypeError: Cannot read property 'somedata' of undefined
Не понимаю, почему оно считает свойством this 'somedata'. При замене this.somedata на somedata работает:
let somedata = this.somedata
Object.keys(somedata).map( ... )
Однако такой подход глаза режет. Как можно лучше поступить в данном случае?
this) в js. Это типичная ситуация. – YozhEzhi Apr 23 '17 at 07:18forEach.thisможно передать вторым аргументом – Grundy Apr 23 '17 at 07:47