Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Почему for (var p in Obj) не находит свойство? (https://javascript.ru/forum/misc/28823-pochemu-var-p-obj-ne-nakhodit-svojjstvo.html)

milvic 04.06.2012 11:08

Почему for (var p in Obj) не находит свойство?
 
Вложений: 1
Добрый день, всем.

Либо FB глючит, либо чего то не понимаю, скорее второе :)

Делаю обход свойств объекта:
for (var p in Obj)
{
// p == null
}
но FireBug показывает что свойство есть, как сиё понимать?
скриншот в аттаче.

devote 04.06.2012 11:15

Цитата:

Сообщение от milvic
но FireBug показывает что свойство есть, как сиё понимать?

скрин ваш не посмотреть, а свойство скорее всего просто не попадает в список перечисляемых

devote 04.06.2012 11:22

var obj = { key: "hello!" };

Object.defineProperty( obj, "key", {
    value: obj['key'],
    enumerable: false,
    configurable: true
});

alert( "Свойство key=" + obj['key'] ); // покажем что свойство существует.

for( var p in obj ) {
    alert( p ); // увы но этот алерт не сработает. Хотя свойство есть
}

obj['key'] = "Test"; // назначим что нить

// снова затестим
for( var p in obj ) {
    alert( p ); // увы но этот алерт не сработает. Хотя свойство есть
}

beard 04.06.2012 12:24

devote,
ES5-shaman;)

beard 04.06.2012 14:37

Maxmaxmахimus,
ну уже тогда можно было бы так напсать
var obj = {};

Object.defineProperty( obj, "key", {
    value: "hello",
    enumerable: false,
    configurable: true
});

а то Object.defineProperty слегка как Object.settingProperty (с) :)

devote 04.06.2012 14:49

Цитата:

Сообщение от Maxmaxmахimus
а особенно вот эта строчка value: obj['key'] показывает высочайший уровень мастерства

это лишь иллюстрация была и не более того, а вертеть можно как угодно, благо язык этого не запрещает.

melky 04.06.2012 15:04

Maxmaxmахimus, кто-то не прав?

melky 04.06.2012 15:22

Цитата:

Сообщение от Maxmaxmахimus (Сообщение 178769)

Да, мсье. Но так чуть больше кода, правда он перестал повторяться :). Это же как главный грех в программировании.


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