Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Отделить объект a.length от строкового операнда (https://javascript.ru/forum/misc/66045-otdelit-obekt-length-ot-strokovogo-operanda.html)

AleksSergSB 22.11.2016 16:44

Отделить объект a.length от строкового операнда
 
Использую функцию eval(str), знать заранее где в объекте может быть length объект не могу.
Написан не совсем корректно Джейсон в котором есть элементы объекта *.length и значения числовые.
Можно ли как-нибудь заблокировать выполнения строковой операции *.length ?
Или принудительно выполнять обращения только как к объекту Length иначе ошибка?
Возможно есть иные решения.

Coriolan161 22.11.2016 17:23

AleksSergSB,
Пример покажи. Я visual lerner, а не парсер твоих предложений.

AleksSergSB 22.11.2016 17:30

jsonss = {"bb":
        {"vn":"i", "vn1": "r"},
        "h":[
              {"h1":"11", "h2":"12","h3":"13"},
              {"h11":"22", "h22":"232","h33":"343"},
              {"h31":"252", "h32":"2532","h43":"343"},
            ],
        "length": 36,
        "rr": {"r1":"tes", "r2":"tes2"},   
        "mo": null,
        "leng":"2000"
    }
rez = jsonss.length // такой объект может существовать, а может нет!

объект length может придти, а может не придти. Вызываю функцией eval(), поэтому ищу метод отделить значение объекта от количества символов.

Coriolan161 23.11.2016 00:33

AleksSergSB,
Цитата:

объект length может придти, а может не придти
Это не объект, это свойство.

Короче выход такой
1) Берешь json и парсишь его
2) Тебе надо заменить свойство length на _length
3) Обратно это в json перегоняешь
4) зовешь свой eval

AleksSergSB 23.11.2016 17:46

Цитата:

Сообщение от Coriolan161 (Сообщение 435848)
AleksSergSB,
Короче выход такой
1) Берешь json и парсишь его
2) Тебе надо заменить свойство length на _length
3) Обратно это в json перегоняешь
4) зовешь свой eval

Спасибо! Интересное решение. Заменить Length.
Я в другую сторону копал. А можно как-то присвоить значение свойству через eval? eval(str)="1"; потом соответственно ловить catch, если свойства такого нет. Метод универсальный и быстрее чем со строками работать. Можно как-то присвоить значение таким методом?

Coriolan161 23.11.2016 18:34

AleksSergSB,
Цитата:

Метод универсальный
Кто? eval? Забудь.


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