2015-03-30 4 views
0

Я учусь JavaScript ... извините ...Изменение свойств объекта из функции

Пример:

var car = { 
    brand : 'fiat' 
} 
$(window).resize(function(){ 
    car.brand = 'audi'; 
}) 

console.log(car.brand) 

Как я могу получить 'ауди'?

+0

Вы не можете получить 'audi'. 'console.log()' запускается во время загрузки, но вы меняете значение только при изменении размера окна ... остановитесь, чтобы надеяться увидеть его и попробовать что-то еще! –

ответ

1

Значение меняется! Но давайте немного поднимемся. Согласно API документации Jquery по поводу resize()

Событие изменения размера посылается в окно элемента, когда изменение размера окна браузера:

car.brand не будет установлен в 'audi' до событие изменения размера запускается. Сценарий будет продолжать выполнять до конца и записывать начальное значение для car.brand, потому что окно не было изменено.

+0

Спасибо за ваш ответ. Я продолжаю получать «фиат». Пожалуйста, проверьте: https://jsfiddle.net/luiscornejo/neem5yah/ –

+1

Это отличный ответ. (Я бы дважды повысил, если мог). @LuisCornejo, код внутри вашей функции не запускается до тех пор, пока окно не изменится. В момент, когда запущен 'console.log', окно не изменилось, поэтому значение' car.brand' не изменилось. –

1

Позвольте мне дать вам хронологию событий:

  1. car определяется с brand из 'fiat'.
  2. A listener is addedwindowresize Событие. (Функция не работает здесь, так car.brand остается такой же, как когда он был определен.)
  3. Значение car.brand записывается в консоль. (На данный момент, это 'fiat'.)

Если вы хотите, чтобы войти значение: 'audi', вы можете использовать что-то вроде этого:

var car = { 
    brand : 'fiat' 
} 
$(window).resize(function() { 
    car.brand = 'audi'; 
    console.log(car.brand); // It will log 'audi' here. 
}) 

console.log(car.brand) // It will log 'fiat' here. 

Бревно внутри функции resize не будет работать до тех пор, при изменении размера окна, так что вы увидите что-то вроде этого в консоли:

'fiat' 

, а затем после того, как вы измените размер окна:

'fiat' 
'audi' 
+0

Точно @jsve! Вот в чем вопрос. В этом примере единственный способ запустить console.log изнутри window.resize(), я знаю. Но я хочу изменить значение свойства объекта из события изменения размера. Я работаю в плагине слайдера, и я сделал объекты для разных видовых экранов (через matchmedia), которые позволяют изменять конфигурацию столбцов ... Он отлично работает, но когда изменяется размер окна, мне нужно перезагрузить страницу, и это Плохо. http://luiscornejo.com/cornislider3 –

+0

Вот мое предложение. Создайте функцию, которая получает высоту и ширину окна (viewport) и соответственно настраивает отображение.Затем вызовите эту функцию, когда страница загружается и когда страница изменяется. –

+0

Спасибо, jsve, я пробовал! (Извините, мне нужно изменить свойство объекта вне функции внутри функции) –

Смежные вопросы