JavaScript: ООП
var browser = {
msie: false,
mozilla: true,
name: function() {
for ( prop in browser )
if ( browser[prop]===true )
return prop;
}
};
console.log( browser.name ); //<---- Не меняя метода вызова - как элегантно решить задачу?
|
console.log( browser.name() ); |
Цитата:
|
Ну вы понимаете, что геттеры в js есть, но они не кросс-браузерны.
Если вам так приспичило, то надо предварительно записать нужную информацию в browser.name.
(function() {
for (var prop in browser ) {
if ( browser[prop]===true ) {
browser.name = prop;
break;
}
}
})();
|
var browser = {
msie: false,
mozilla: true,
name: (function() {
for (var prop in browser ) {
if ( browser[prop]===true ) {
browser.name = prop;
break;
}
}
})()
};
console.log( browser.name );
Я правильно понял? Если да, то "undefined" |
Цитата:
var browser = {
msie: false,
mozilla: true,
name: (function() {
for (var prop in browser )
if ( browser[prop]===true )
return prop;
})()
};
console.log( browser.name );
|
В любом случае - "undefined".
Пробовал изначально так уже исхитриться. |
Ну потому что в момент запуска функции объект browser еще не определен. Функцию нужно запускать после его создания.
|
var browser = {
msie: false,
mozilla: true
};
browser.name = (function() {
for (var prop in browser )
if ( browser[prop]===true )
return prop;
})()
console.log( browser.name );
|
Понял. И это и будет самым изящным решением?
|
нет
самым изящным будет добавление в изначальный код двух скобок :) |
Так было бы совсем легко. :)
А можно что-нить еще придумать, ну, чтобы было прям ваще?.. ^_^ |
Цитата:
|
Цитата:
UPD: я бы предложил так:
var browser = {
msie: false,
mozilla: false,
name: 'opera'
};
console.log( browser.name );
|
| Часовой пояс GMT +3, время: 19:06. |