Да, я прочитал это еще до того, как Вы дали ссылку.
Много нового не узнал. Не в последнюю очередь благодаря тому, что читал другие Ваши комментарии :)
В ES3 нет классов, но если кому-то (не мне) действительно нравится переносить классовую терминологию на JS, то к чему еще привешивать ярлык "класса", как ни к конструктору?
PS. Кстати, выше я конструктор с классом нигде не сравнивал :)
Я имел ввиду, что все объекты, созданные одним конструктором будут разделять одну локальную переменную из контекста конструктора, т.е. это будет аналог статической переменной из class-based ООП.
Правда, как уже признался, в этом предположении я наврал. Сейчас тоже с этим работаю и напутал понятия с перегрева :)
тут вместо перебора половины (в среднем) массива, перебор полного + создание новых элементов, хэшей и т.п.
А вот если по одному массиву нужно искать несколько раз, тут ваш вариант может и выиграть.
Не надо ничего знать и особого склада ума не надо.
Просто, когда вдруг понадобиться поиск по массиву нужно подумать: "а вот есть прекрасная документация на php.net и там огромная куча функций по работе с массивами, давайте в первую очередь просмотрим их список".
>Дайте ссылочку почитать о том, что namespace – это объект. ;)
В статье и данной дискуссии абстрактное понятие пространства имён реализуется (может кто-то скажет - эмулируется) в JS путём сбора функций, переменных и т.п. вместе в виде свойств одного объекта :)
>все же локальные переменные конструктора – это private instance members
Да, тут меня торкнуло что-то.
>классов в ES3 не существует.
Я специально "класса" взял в кавычки.
Ну, пространство имён это и есть неповторимый объект :)
В случае же множества объектов, по идее, локальные переменные конструктора становятся не "приватными" свойствами объекта, а приватными статическими свойствами "класса".
К сожалению, всё что могу ответить на это, это повторить старые свои слова "khim, вот вы пишите на хабре очень много умного и интересного, но когда речь заходит о PHP на вас что-то находит нехорошее.".
$var не может браться откуда угодно, оно может браться из:
1. Предыдущих вычислений и иметь абсолютно конкретный тип, зависящий от этих самых вычислений.
2. Из базы - в большинстве баз столбцы имеют совершенно определенный тип.
3. Из другой функции - смотрите документацию к этой функции
4. В пришедшем параметре запроса. Вот здесь нужно проверять. Так же, как и в других языках, следует проверять, что же там пришло извне.
А зачем в PHP добиваться того, что должно быть в Си?
>программист, вызывая функцию не знает, какой тип она ожидает на входе и какой возвращает на выходе
точно так же, как и в Си, это можно узнать из документации, комментариев или самого кода.
$var = 2 + 2;
Лично я уверен, что в var будет int настолько, насколько вообще можно быть уверенным в чём-то в этом мире.
Как любят все вспоминать про этот FI и зачем он создавался.
Для чего C в 70-м году создавался помните? Согласны ли вы с тем, что он за эти годы прошел некоторый путь эволюции? Почему же пыху вы в этом отказываете?
Много нового не узнал. Не в последнюю очередь благодаря тому, что читал другие Ваши комментарии :)
В ES3 нет классов, но если кому-то (не мне) действительно нравится переносить классовую терминологию на JS, то к чему еще привешивать ярлык "класса", как ни к конструктору?
PS. Кстати, выше я конструктор с классом нигде не сравнивал :)
>назови цвет?
красный
>назови инструмент?
зелёный
Правда, как уже признался, в этом предположении я наврал. Сейчас тоже с этим работаю и напутал понятия с перегрева :)
А вот если по одному массиву нужно искать несколько раз, тут ваш вариант может и выиграть.
Проверите — доложите :)
Просто, когда вдруг понадобиться поиск по массиву нужно подумать: "а вот есть прекрасная документация на php.net и там огромная куча функций по работе с массивами, давайте в первую очередь просмотрим их список".
В статье и данной дискуссии абстрактное понятие пространства имён реализуется (может кто-то скажет - эмулируется) в JS путём сбора функций, переменных и т.п. вместе в виде свойств одного объекта :)
>все же локальные переменные конструктора – это private instance members
Да, тут меня торкнуло что-то.
>классов в ES3 не существует.
Я специально "класса" взял в кавычки.
В случае же множества объектов, по идее, локальные переменные конструктора становятся не "приватными" свойствами объекта, а приватными статическими свойствами "класса".
var App = new (function() {...})();
1. Предыдущих вычислений и иметь абсолютно конкретный тип, зависящий от этих самых вычислений.
2. Из базы - в большинстве баз столбцы имеют совершенно определенный тип.
3. Из другой функции - смотрите документацию к этой функции
4. В пришедшем параметре запроса. Вот здесь нужно проверять. Так же, как и в других языках, следует проверять, что же там пришло извне.
>программист, вызывая функцию не знает, какой тип она ожидает на входе и какой возвращает на выходе
точно так же, как и в Си, это можно узнать из документации, комментариев или самого кода.
Лично я уверен, что в var будет int настолько, насколько вообще можно быть уверенным в чём-то в этом мире.
Как любят все вспоминать про этот FI и зачем он создавался.
Для чего C в 70-м году создавался помните? Согласны ли вы с тем, что он за эти годы прошел некоторый путь эволюции? Почему же пыху вы в этом отказываете?