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 ); |
Понял. И это и будет самым изящным решением?
|
Часовой пояс GMT +3, время: 16:17. |