Сообщение от macdack
|
почему при вызове свойства length используется синтаксис как при обращении к свойству объекта
|
Синтаксис один и тот же как для свойств, так и для методов - точечный (обычно применяется для объектов, а строки, также как и массивы, являются объектами javascript).
Вопрос в том, сделать ли длину строки её свойством или её методом.
Обычно свойства представляют в программе данные, методы - действия над данными.
Длина строки (количество символов в строке) - это данные, характеризующие строку, поэтому логичнее считать это свойством (возвращение длины строки считать методом, с этой точки зрения, нелогично, так как никаких действий над данными в этом случае не осуществляется, данные просто становятся доступными для использования).
Про то, что вы не можете изменять длину строки путём её прямой установки при помощи оператора присваивания, вам уже ответили - данное свойство доступно только для чтения и, следовательно, недоступно для записи.
Да, строки удобно рассматривать как одномерный массив символов, но это не обозначает, что строки обязаны быть в прямом смысле массивами, это вопрос стандарта языка.
Если хотите это изменить, вот два варианта:
1) обратитесь в W3C и убедите их это изменить
2) сделайте свой стандарт языка (в котором length доступно для записи), создайте поддерживающий его интерпретатор и браузер с этим интерпретатором и продвиньте свои продукты на мировом рынке).