Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как получить свойсвто объекта? (https://javascript.ru/forum/misc/50949-kak-poluchit-svojjsvto-obekta.html)

Armen 18.10.2014 14:00

Как получить свойсвто объекта?
 
Здравствуйте, подскажите пожалуйста.
Есть строка кода:
Test.a: 'Hello' || {Name: 'Vasya'}

Вопрос: как мне при необходимости получить один из вариантов, к примеру:
если я хочу получить тексто привет, то я могу написать:
Test.a // Hello

а вот как мне получить Вася???
Test.a.Name // undefined

Какие есть варианты? Как вариант можно изменить первоначальную запись, то есть эту Test.a: 'Hello' || {Name: 'Vasya'} только как?

ruslan_mart 18.10.2014 14:29

Armen, в Вашем случае, {Name: 'Vasya'} тут не несёт смысла, ибо "Hello" - это true, следовательно объект записаться просто не может.

А что мешает просто сделать объектом?
Test.a = {
    Name: 'Vasya',
    Text: 'Hello'
};

Armen 18.10.2014 14:43

Цитата:

Сообщение от Ruslan_xDD (Сообщение 336345)
Armen, в Вашем случае, {Name: 'Vasya'} тут не несёт смысла, ибо "Hello" - это true, следовательно объект записаться просто не может.

А что мешает просто сделать объектом?
Test.a = {
    Name: 'Vasya',
    Text: 'Hello'
};

Ничего не мешает, но мне очень упростит код, если одно значение будет по-умолчанию, то есть, если свойство Name есть, то я получаю Васю, а в противном случае, получаю значение по умолчанию, то есть ПРИВЕТ

terminator-101 18.10.2014 23:55

Armen,
В принципе, можно попробовать вот так
<html>
<head>
</head>
    <body>
 
<script>


Test={
a: new String("Hello")
}
Test.a.Name="Vasya"

//  { '0': 'H', '1': 'e', '2': 'l', '3': 'l', '4': 'o', Name: 'Vasya' } // реально представляет из себя вот такой объект

console.log(Test.a)
console.log(Test.a.Name)
//  Hello
//  Vasya

console.log(Test.a.slice(-5), Test.a.length) // Hello 5
alert(Test.a)
document.write(Test.a)

</script>
    </body>
</html>


Как видно, при употреблении в строковом контексте, приводится к нормальной строке. Заметил только,что в дебильном V8 в console.log не приводится. В любом случае, можно привести явно, если чо.

Erolast 19.10.2014 06:45

Я не очень понял суть задачи, но, возможно, нужны геттеры?


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