0
function Len() {
    this.name = "leno";
    this.age = 24;

    this.every = function () {
        for (let i in this) {
            console.log(this.i)
            debugger
        }
    }
}

В дебаггере заметил, что this ссылается на функцию-конструктор, а не на объект вызывающий метод. Почему?

Пример использования

let len = new Len()
len.every()
  • Добавьте пример, как вы вызываете Len() и на каком этапе this неправильный. 2) Тут this.i вероятно нужно this[i].
  • – wololo Mar 17 '21 at 12:46
  • Добавил. На этапе this.i. – Yoko Franci Mar 17 '21 at 12:51
  • this ссылается на функцию-конструктор - почему ты так думаешь? – Grundy Mar 17 '21 at 12:52
  • this[i] сработал! Однако я не понимаю в чем сакральное отличие между this.i и this[i] – Yoko Franci Mar 17 '21 at 12:53
  • В дебаггере this.i указывал на Len() – Yoko Franci Mar 17 '21 at 12:54
  • Хотя это не так. Я неправильно использовал дебаггер, прошу прощения, но все равно не понимаю почему именно this[i] – Yoko Franci Mar 17 '21 at 12:56
  • 1
    сакральное отличие между this.i и this[i] - this.i - это получение свойства с именем i; this[i] получение свойства с именем, которое хранится в переменной i – Grundy Mar 17 '21 at 12:59
  • 1
    и если проще, то this.i === this['i'] – Grundy Mar 17 '21 at 12:59
  • Понял-понял, спасибо большое. Довольно глупая ошибка (даже в среде было отмечено, что i не используется). Еще раз, огромная благодарность. – Yoko Franci Mar 17 '21 at 13:01