синтаксис, вопрос
почему при вызове свойства length используется синтаксис как при обращении к свойству объекта
str = "привет" alert(str.length) obj = {"length": "пока"} alert(obj.length) // при этом не возможно изменить это свойство: str.length = 1 //но возможно: obj.length = 1 не правильно ли называть это не свойством строки а ее методом то есть str.length это вызов метода, возвращающего длину, но не способного принять значение извне |
Потому что идёт обращение к свойству объекта.
|
почему же невозможно изменить это свойство как свойство любого объекта
я говорю что это скорее метод, потому что ведет себя как метод |
у массива length readonly
|
Цитата:
|
Цитата:
же |
nasqad -1
|
почему уже оба говорят что массив?
lenght массива можно менять |
Цитата:
Вопрос в том, сделать ли длину строки её свойством или её методом. Обычно свойства представляют в программе данные, методы - действия над данными. Длина строки (количество символов в строке) - это данные, характеризующие строку, поэтому логичнее считать это свойством (возвращение длины строки считать методом, с этой точки зрения, нелогично, так как никаких действий над данными в этом случае не осуществляется, данные просто становятся доступными для использования). Про то, что вы не можете изменять длину строки путём её прямой установки при помощи оператора присваивания, вам уже ответили - данное свойство доступно только для чтения и, следовательно, недоступно для записи. Да, строки удобно рассматривать как одномерный массив символов, но это не обозначает, что строки обязаны быть в прямом смысле массивами, это вопрос стандарта языка. Если хотите это изменить, вот два варианта: 1) обратитесь в W3C и убедите их это изменить 2) сделайте свой стандарт языка (в котором length доступно для записи), создайте поддерживающий его интерпретатор и браузер с этим интерпретатором и продвиньте свои продукты на мировом рынке). |
понял спасибо
просто когда читал учебник не запомнилось что некоторые свойства только для чтения |
Часовой пояс GMT +3, время: 18:10. |