Правила раздела:
1 Задавайте конкретные вопросы. Для болтовни есть свободный раздел.
2 По возможности давайте конкретные ответы.
3 Один вопрос=одна тема. Если хотите задать ещё вопрос, то начинайте новую тему.
4 Название темы должно составлять сам вопрос, и быть максимально конкретным. Рекомендуется начинать тему словами "Как", "Что", "Почему". А первый пост повторяет вопрос и даёт расширенные сведения.
5 Рекомендуется указывать версию мейкера (2000, 2003, RMXP, RMVX, ACE, IGM, и.т.д.. Это важно, и всё равно ведь спросят.
6 Темы "Пара вопросов", "Помогите", и подобные им - самый лёгкий путь к бану.
7 Поиск находится вверху справа.
А. Названия подразделов этого раздела уточняются. Советы принимаются.

Ошибка Cannot read property

Организатор конкурсов Тестер Программист JavaScript
Больше
7 года 1 мес. назад - 7 года 1 мес. назад #110213 от Noxmils
Здравствуйте!
При попытке наплагинить я столкнулся с такой проблемой:


Вот строчка 214:
Code:
if (this.victims.some(function (vic) {return vic == this._neighbors[Mafia][j]})) {

this.victims - это массив, this._neighbors[Mafia][j] - число. Я это проверил, они существуют и определены. Подозреваю, что я как-то неправильно написал функцию-колбек, но я делал по примерам и вроде все так, как в них.
Последнее редактирование: 7 года 1 мес. назад пользователем AnnTenna.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Даритель Стимкея Учитель Организатор конкурсов 2 место Программист JavaScript Оратор
Больше
7 года 1 мес. назад #110240 от Mur
Рискну предположить, что у тебя в function теряется this. там он становится своим внутренним.

Как вариант можно попробовать забиндить:
Code:
function (vic, neighbor) {return vic == neighbor}.bind(this._neighbors[Mafia][j])
Спасибо сказали: Noxmils

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Организатор конкурсов Тестер Программист JavaScript
Больше
7 года 1 мес. назад #110258 от Noxmils
Mur пишет:

Рискну предположить, что у тебя в function теряется this. там он становится своим внутренним.


С большой долей вероятности Вы были правы. Я вынес this._neighbors[Mafia] во внешнюю переменную и все заработало
Code:
var neighbors = this._neighbors[Mafia]; if (this.victims.some(function (vic) {return vic == neighbors[j]})) {

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Оратор 1 место в Готв 3 место Готв 2 место Учитель Композитор Победитель конкурса Организатор конкурсов
Больше
7 года 1 мес. назад #110259 от yuryol

Mur пишет: Рискну предположить, что у тебя в function теряется this. там он становится своим внутренним.

Как вариант можно попробовать забиндить:

Code:
function (vic, neighbor) {return vic == neighbor}.bind(this._neighbors[Mafia][j])


а если стрелочной функцией, this должен сработать же вроде?
Code:
if (this.victims.some(vic => return vic == this._neighbors[Mafia][j])) {
Спасибо сказали: Noxmils

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Время создания страницы: 0.098 секунд
Работает на Kunena форум