--- Добавлено --- Я явно указал сию беседу как рассуждение со стороны. Не чего не утверждал, а именно указывал на то что я размышляю, что оно выглядит вот так, а как на самом деле там внутри да кто его знает. А js я вообще привёл как аналогию работы я не имел ввиду что оно внутри работает вот так. А вообще один фронтер рассказывал что в js создаются линки на объекты при их приравнивании к переменным. то что она так работает это я знаю. А вот как внутри под коркой она работает я не знал. --- Добавлено --- @Fell-x27 и кстате мне не нравистя то что ты мне рассказал. Оно не должна вот так работать. Потому что нет никакой конкретики. Не люблю такое. Люблю когда всё указано чётко и конкретно 1 = 1, а не так что 1 может быть любым из 999 --- Добавлено --- поэтому я и не люблю Js нет не чего конкретного. Всё может любым всё может быть объектом а может быть и массивом вот хрен пойми. Функция может являтся объектом. Т есть вроде бы это функция, но если мы вызовем её через new всё создаёт экземпляр Какого класса ? Т есть при инциализации функции под неё создаётся класс? Или же создаётся класс в тот момент когда указывается new? Как оно работает ? --- Добавлено --- у js явная проблема с типизацией данных. --- Добавлено --- а где вообще ты информацию эту достал? Даже в доке не написано как оно под коркой работает. --- Добавлено --- колись ты разработчик яваскрипта? --- Добавлено --- или это тоже твои рассуждения?) --- Добавлено --- или когда мы в функции указываем уникальный ключ this она сразу при интерпритации она создаст класс по внутренним параметрам функции ?) Т.есть Любой метод из которых будет являтся конструктором ? Т есть в общем понимании что мы знаем о конструкторах это такая функция которая тут же срабатывает при вызове класса ведь всё верно? Тогда почему при вызове класса как ты написал в примере тут же не отработали все функции? А значит я делаю вывод там не такой конструктор как мы привыкли его видеть. ТАм не что другое. Свой конструктор ява скрипта. Который и не конструктор вовсе. --- Добавлено --- Можешь мне рассказать пожалуйста подробную логику работы ява скрипта, если ты знаешь как она работает потому что у меня вопросов к этому языку тонны а ответов нету. И найти не могу. --- Добавлено --- если в пыхе всё доступно, понятно и интуитивно. То в js явный раскол логической цепочки наблюдается (функция=объект=класс) что? чё курили разрабы языка?
Что еще JS тебе должен/не должен? Что значит "приравнивание к переменным"? Ты про присвоение? Да, в JS объекты передаются и присваиваются по ссылке. Во всех языках(и в пхп тоже, внезапно) объекты передаются и присваиваются только по ссылке. Объекты - это ссылочный тип данных. Это вот буквально их суть. Плохо искал, значит. Нет, это не мои рассуждения. Это описание механизма создания объекта через вызов функций посредством оператора new. Ты очень, очень, ОЧЕНЬ плывешь в терминологии. Ты сам не понимаешь, что говоришь. Печально то, что ты не понимаешь даже таких базисов, хотя в том же PHP должен был с ними сталкиваться. Потому что, если бы понимал, не говорил бы это вот. Какой уникальный ключ? О чем ты? В JS, покуда все есть объект, у всего, окромя примитивов, есть this. Я не указывал "уникальный ключ this", этот this существует в функции изначально, как $this существует в php-объектах и как this существует в любом другом языке, где есть ООП, это просто ссылка на самого себя, ты ее не указываешь, она не является ключом. Когда ты вызвал функцию через new, JS вызывает ее, дает ей отработать, потом возвращает ее "this" как финальный объект, все. Тут нет ничего сложного. Ты как фермер, который завел страусов, но не понимает, как их доить. Не надо переносить свой опыт и аналогии с PHP на JS. Это разные языки. Разные до мозга костей. В PHP есть крапулька удачных механик из JS. В JS же нет ни капли от PHP. Вот этот момент разрулит 95% твоих проблем. Если используешь JS, то пользуйся им как JS, а не как PHP. Это другой язык. Состоящий из чистейшего рефлекшена и апофеоза абстрактности. То, что он ломает твои шаблоны - сугубо твоя проблема. Страусы не доятся. Прими это. Как и то, что функция может быть объектом и иметь свойства и методы. --- Добавлено --- Вот тебе пример со схемой создания объекта через явный return, а не через неявный возврат this. Я это тоже описывал. Мб такой механизм тебе понятнее будет. Они оба равнозначны. --- Добавлено --- А вот тебе третий вариант, вообще без конструктора. Такое тоже часто бывает полезно, если нам нужно собрать штучный объект, без фабрикования. Например, каркас модуля. Он уже не равнозначен первым двум. Он пишется "как есть", без шаблона как такового. Но от него, как и от любого другого объекта, можно наследоваться через прототипирование, да.
this по переводу это здесь, значит должен ссылатсья на себя же типа. Т есть то что есть внутри данной области видимости. Т.есть он ломает большинство шаблонных си подобных языков. --- Добавлено --- в php на каждый свой ключ своя инициализация функция это функция, класс это класс --- Добавлено --- Если думаешь что я не понимаю что такое ООП, то очень ошибаешься. Я хорошо понимаю что это такое. И мне никакой язык не нужен чтобы описать что такое класс и экземпляр класса(Объект) --- Добавлено --- я русскими словами выразиться могу что это такое
this по переводу - это не "здесь", а "этот". Вот, начинаешь понимать. Си-подобность, к слову, это не про парадигмы и шаблоны, это только про базовый синтаксис. Перестань использовать слово "ключ" невпопад. О каких ключах ты говоришь вообще? Ключ - это имя ячейки в ассоциативном массиве. Тебя сложно понимать из-за того, что ты говоришь на какой-то своей терминологии. Сказал человек, до этого говоривший про "объявление уникального ключа this". Плывешь. По яваскрипту в частности. Но делаешь выводы и безапелляционные мыслеизявления.
я имею ввиду зарезервированные слова. Которые используются при интерпритации или компиляции языка. --- Добавлено --- чутка ошибся с переводом. Но смысл тот же в данном случае --- Добавлено --- @Fell-x27 кстати такой вопрос. Не могу найти в инете. А во что интерпретируется php и js? в ассемблер?
Нет. Это не ассемблер. Это php-байткод. Который, в свою очередь, исполняется php-машиной. Непосредственно в ассемблер транслируются компилируемые языки, к которым ни JS, ни PHP не относятся. При этом JS, если не памятую, умеет в JIT-компиляцию. А вот PHP пока что нет. Обещают завезти в восьмой версии.
интерпретируется в ассемблер - вообще в корне неверная фраза. Интерпретация - это выполнение исходного кода, непосредственное. Хотя, php сейчас этим не занимается, а генерирует байт-код для своей машины (команды, которые выполняет программа-исполнитель, не напрямую процессор, в этом разница между php и тем же C, который компилируется в код, понятный непосредственно процессору). Но благодаря такой модели исполнения у нас есть огромное число возможностей, которые не доступны в компилируемых языках типа C++. То же создание экземпляра класса по имени из строки.
@mkramer На чём написана программа которая считывает байт код php ? И во что она его переводит дальше? php > байт код > программа считывающая байт код на Си++ > ассемблер > машинный код (логическая цепочка такая?)
@askanim, на C написана, насколько я знаю. Она никуда не переводит, она его исполняет сразу. Т.е. процессор исполняет не код твоей программы, а код php-машины, исполняющий код твоей программы. Если интересно, поищи инфу, как пишутся интерпретаторы. Может быть полезно. Я когда-то делал на C++ интерпретатор подмножества паскаля (в качестве курсового проекта). Там правда был классический интерпретатор, без байт-кода.
а понял программа то уже скомпилирована. Всё понял она сразу транслитит в процессор. --- Добавлено --- Спасибо крайне интересная информация.
Она ничего никуда не транслирует, она выступает в качестве, если хочешь, программного эмулятора процессора, и выполняет код. Ты же Зандстру читал, там у него шаблон Interpreter описан. Вот примерно тоже самое и происходит.
Ну вот то, что на скрине, это результат работы дизассемблера. Надо проверить, как именно выглядит байтокод php. Некорректно говорить "интерпретация в ассемблер", но php-машина исполняет набор команд, очень похожий на ассемблер.
всё за сим нарикаем его "ассемблер php-машины" --- Добавлено --- @mkramer ты кстате с vue разбирался?) Не знаешь как в компоненте скрипты писать чтобы они отрабатывали а не возмущались.
Хватит придумывать свои термины поверх существующих. То у тебя зарезервированные слова - это ключи, то байт-код это "ассемблер пхп-машины". Ты когда свою терминологию придумываешь и начинаешь на ней говорить, можешь сразу забыть о понимании со стороны другого программиста. Круто, что авторы его так назвали, только там в дескрипшине сказано: И да. Вот как то, что ты скинул и выглядит.
Каких объектов не будет? Переменная разве не объект? Статические методы - это функции, используемые в контексте класса, а если есть класс значит же есть ООП.
Функция is_object() скажет тебе, объект или нет. --- Добавлено --- Клёво! Можно выучить и кодить на опкодах))