Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   ссылка на свойство объекта, до его объявления (https://javascript.ru/forum/css-html/54789-ssylka-na-svojjstvo-obekta-do-ego-obyavleniya.html)

Jekel 31.03.2015 23:55

ссылка на свойство объекта, до его объявления
 
Здравствуйте, помогите решить задачку. Нужно передать ссылку на свойство объекта до его объявления...но сейчас получаю ошибку Uncaught TypeError: Cannot read property 'width' of undefined
ясно-понятно, что оно его не может найти, как выйти из положения...порядок выполнения важно соблюдать такой
test({
    width: cycle.width
});

window.cycle = {width:150};

function test(obj) {
    console.log(obj.width);  // тут нужно получить 150
}

jsnb 01.04.2015 06:54

Здравствуйте, помогите решить задачку. Я хочу поесть суп до того, как его приготовлю...но сейчас когда сую ложку в пустую кастрюлю я никак не могу наесться. Ясно-понятно, что в кастрюле нет супа, как выйти из положения...порядок выполнения важно соблюдать такой

Jekel 01.04.2015 12:19

Немного не так...я хочу поесть супа, но сунуть ложку в кастрюлю не нужно, в том то и дело) захотел поесть супа, но я знаю где он будет после того, как приготовлю...запомнил, что он будет в кастрюле) приготовил....вспомнил, что я его хотел есть и где он лежит...поел

theKingOfJava 01.04.2015 13:40

Цитата:

Сообщение от Jekel
приготовил....вспомнил, что я его хотел есть и где он лежит...поел

Но как ты можешь быть уверен что он там УЖЕ лежит, Если ты не знаешь, когда он там должен появиться?

может как то так:
test({
    width: function(){if(window.cycle) return window.cycle.width}
});
 
window.cycle = {width:150};
 
function test(obj) {
    setTimeout(function(){if(obj.width()) return console.log(obj.width()) ; test(obj)}, 100)  // тут нужно получить 150
}

?

Jekel 01.04.2015 14:31

:D как вариант) спасибо за пример

krasovsky 02.04.2015 09:58

Передавать не ссылку а строку. с помощью try catch и eval получать значение:
myObj = {a:1,b:2}
function getVal(val) {
try {
	var ev = eval(value);
	return ev != void(0) ? ev : '';
}
catch(e) {
     return 'Error';
}
}
getVal('myObj.somevalue');// пустая строка
getVal('myObj.a');// 1

Jekel 02.04.2015 15:55

это вариант, спасибо..но это очень медленный вариант, я думаю в моем случае решают события


Часовой пояс GMT +3, время: 12:22.