Почему значение undefined?

194
08 октября 2018, 22:10

После всех элементов в html файле располагаю скрипт. В объекте page есть объект obj со значением $(".container_main"). В следующем объекте обращаюсь к obj, но браузер выдаёт ошибку.

Пример кода:

<script>
    var page = {
        obj: $(".container_main"), 
        height: this.obj.height(), //cannot read property 'height' of undefined
        width: this.height * 9/16
    }
</script>

Если не использовать объект obj, а напрямую обращаться к $(".container_main"), всё в порядке.

Пример кода, который работает:

<script>
    var page = {
        height: $(".container_main").height(),
        width: this.height * 9/16
    }
</script>

В чем проблема?

Answer 1
var page = {
    obj: $(".container_main"), 
    height: this.obj.height(), // this в этом месте это глобальный объект window, а не объект, который Вы создаете, - его еще нет
    width: this.height * 9/16
}

Сделайте так:

var page = {
    obj: $(".container_main"), 
    height: function() { return this.obj.height(); },
    width: function() { return this.height() * 9/16; }
}
console.log(page.height(), page.width());
READ ALSO
Не инкрементируется значение i

Не инкрементируется значение i

Возник вопрос в коде, а именно не инкрементируется значение this_i

180
Vue.js отслеживание клика вне элемента

Vue.js отслеживание клика вне элемента

Есть следующая разметка:

464
Кнопка со сменой фона при нажатии [закрыт]

Кнопка со сменой фона при нажатии [закрыт]

Помогите с кодомПри нажатии цвет кнопки меняется

201
Что быстрее innerHTML или createElement appendChild

Что быстрее innerHTML или createElement appendChild

если создавать очень большое дерево, то ИМХО присвоение(=) в innerHTML быстрее чем создание дерева с помощью JSа вот как быть с наращиванием (+=) ?

198