Мнение: большая часть кода там дерьмовая, потому что именно этого хотят программисты.
Косвенно, мы взращивали культуру чрезвычайного творчества. Дело не в том, что я не думаю, что решение проблем имеет творческие элементы - оно есть - просто это даже отдаленно не то же самое, что рисование (см. Знаменитое эссе Пола Грэма «Хакеры и художники»).
Если мы склоняем нашу индустрию к этому подходу, в конечном итоге это означает, что каждый программист может пойти дальше и уничтожить все, что им нужно, очень креативные, сумасшедшие вещи. Конечно, для любого значительного проекта попытка объединить десятки несвязанных, неструктурированных, незапланированных бит в один финальный связный бит не будет работать по определению. Это не предположение или оценка, это состояние отрасли, с которой мы сталкиваемся сегодня. Сколько раз вы видели функциональные фрагменты в основной программе, которые полностью не соответствовали остальному коду? Сейчас это так распространено, что удивительно, что кто-то может использовать любой из этих беспорядков.
Запутанные, сложные, уродливые вещи, которые становятся все хуже и нестабильнее. Если бы мы строили что-то физическое, все на планете говорили бы нам о том, насколько ужасно уродливы и испорчены эти вещи, но, поскольку они более или менее скрыты, будучи виртуальными, мы можем сойти с рук с некоторыми из худших производственных процессов. что наш вид когда-либо увидит. (Можете ли вы представить себе автомобиль, в котором четыре разных человека сконструировали четыре разных колеса четырьмя различными способами?)
Но грустная часть, противоречивая часть всего этого, состоит в том, что нет абсолютно НИКАКОЙ причины для этого будь таким образом, за исключением исторической культуры культура была направлена на большую свободу и меньшую организацию, поэтому мы остались такими (и, вероятно, стали намного хуже). Разработка программного обеспечения - это шутка, но это шутка, потому что программисты хотят, чтобы это было (но никогда бы через миллион лет не признали, что это правда, «заговор со стороны руководства» - лучшая причина для большинства людей).
Как долго мы будем продолжать стрелять себе в ногу, прежде чем мы проснемся и поймем, что мы единственные, кто держит пистолет, направляет его и также нажимает на курок?
Пол.
Нет, это невозможно.
Вы можете вызвать метод с указанным значением для this (используя method.apply ()
/ method.call ()
), но вы не можете повторно назначить ключевое слово this
.
You can't change what this
refers to from inside the function.
However, you can call a function in a specific context - so that this
refers to a specific object - by using call
or apply
.
JP правильный. Это невозможно. См. Документ спецификации языка JavaScript ECMA-262. Вы можете скачать стандарт здесь:
http://www.ecma-international.org/publications/standards/Ecma-262.htm
Это файл ECMA-262.pdf и на странице 39, раздел 10.1 .7.
10.1.7 This
Имеется значение this, связанное с каждый активный контекст выполнения. В это значение зависит от вызывающего абонента и тип выполняемого кода и определяется, когда контроль переходит в контекст исполнения. Это значение связанный с контекстом выполнения неизменяем.
Примечание "неизменяемо". т.е. не может быть изменено.