Что лежит в основе этой идиомы JavaScript: var сам = это?

Если вы создаете таблицы, представления и т. Д. На лету (кроме табличных переменных или временных таблиц), вам, возможно, придется по-настоящему переосмыслить свой дизайн. Это не то, что обычно должно происходить из пользовательского интерфейса. Даже если вы должны разрешить некоторую настройку, операторы DDL не должны выполняться одновременно с выполнением транзакционных вставок / обновлений / удалений. Гораздо лучше разделить эти функции.

Это также то, что требует разумной дозы рассмотрения и проверки того, что происходит, когда два пользователя одновременно пытаются изменить структуру одной и той же таблицы и затем выполнить транзакцию для вставки данных. Есть некоторые действительно страшные вещи, которые могут случиться, когда вы позволяете пользователям вносить изменения в структуру вашей базы данных.

Кроме того, некоторые операторы DDL всегда должны быть первым оператором пакета. Обращайте на это внимание и во время их запуска.

353
задан DanMan 11 April 2013 в 02:06
поделиться

3 ответа

См. Эту статью на alistapart.com . (Ed: Статья была обновлена ​​с момента первоначальной ссылки)

self используется для сохранения ссылки на исходный this , даже когда контекст меняется. Этот метод часто используется в обработчиках событий (особенно в замыканиях).

Изменить: Обратите внимание, что использование self теперь не рекомендуется, поскольку window.self существует и имеет потенциал вызвать ошибки, если вы не будете осторожны.

То, что вы называете переменной, не имеет особого значения. var that = this; нормально, но в названии нет ничего волшебного.

Функции, объявленные внутри контекста (например, обратные вызовы, замыкания), будут иметь доступ к переменным / функциям, объявленным в той же области или выше.

Например, простой обратный вызов события:

 function MyConstructor (options) {let that = this; this.someprop = options.someprop || 'defaultprop'; document.addEventListener ('щелчок', (событие) => {предупреждение (that.someprop);}); } new MyConstructor ({someprop: "Hello World"}); 
427
ответ дан 23 November 2019 в 00:23
поделиться

Переменная захватывается встроенными функциями, определенными в методе. this в функции будет ссылаться на другой объект. Таким образом, вы можете сделать так, чтобы функция содержала ссылку на this во внешней области видимости.

9
ответ дан 23 November 2019 в 00:23
поделиться

Да, вы увидите это везде. Часто that = this; .

Видите, как self используется внутри функций, вызываемых событиями? У них будет собственный контекст, поэтому self используется для хранения this , которое вошло в Note () .

Причина self по-прежнему доступен для функций, даже если они могут выполняться только после завершения выполнения функции Note () , поскольку внутренние функции получают контекст внешней функции из-за закрытия ].

34
ответ дан 23 November 2019 в 00:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: