Объем функций и это указание являются очень важными частями JS. Требуется логика, чтобы прояснить эту вещь и посмотреть, как моя логика ...
Ниже приводится план, который вы можете напрямую выбрать предметы, которые вам интересны, для чтения.
• Метод определения функции: прямое определение (под окном, внутреннее определение), методы объекта, методы прототипа объектов;
• Метод вызова функции: вызов напрямую, вызов/применить, с
• Для методов непосредственно определенных функций и объектов область применения является цепочкой области по его определению по умолчанию.
• Для непосредственно определенных функций это указывает на окно.
• Для метода объекта это указывает на созданный объект (соответствующий случаю, когда созданный объект возвращает это по умолчанию).
• Используйте Call/Apply, чтобы изменить это указание метода
• При определении функции или метода ее цепочка областей может быть изменена с помощью.
Давайте подробно поговорим об этом ниже:
Определение функций, как упомянуто в схеме, можно разделить на два типа: прямое определение (под окном, внутреннее определение), методы объектов (или методы прототипа объектов). В следующем примере кода вы можете увидеть, что функция Fn1 и Fn2 и метод Dofunction объекта является из соответствующего домена, когда функция использует имя.
var name = 'имя под окном <br/>'; var resultCon; function fn1 () {resultCon.innerHtml += name;} function myObj () {var name = 'name под myObj <br/>'; this.dofunction = function () {resultCon.innerhtml += name;Что произойдет, если «имя» заменяется на «this.name» при использовании значения имени? См. Следующий пример:
var name = 'name под окном <br/>'; var resultcon; function fn1 () {resultCon.innerhtml += this.name;} function myobj () {var name = 'name под myobj <br/>'; this.dofunction = function () {resultCon.innerhtml += this.name;Судя по результатам, мы можем проверить 4 -й и 5 -й пункты в схеме. Мы также можем видеть, что это и область применения представляют собой два отдельных набора цепей, следуя независимой логике запросов переменной. Конкретная логика запроса будет упомянута в следующем анализе производительности. Если вы новичок, рекомендуется сначала взглянуть на базовые знания «цепочки схваток JS».
Что касается вызового метода функции, я использую следующий пример, чтобы проиллюстрировать 2 -ю и 6 -ю статью в очереди:
var name = 'name под окном <br/>'; var resultcon; function fn1 () {resultCon.innerhtml += this.name;} function myobj () {var name = 'name под myobj <br/>'; this.dofunction = function () {resultCon.innerhtml += this.name;Использование вызова и применения при вызове - это изменение этой установки вызываемой функции. Использование с IS для изменения домена запроса переменной в функции вызываемой. Мы удаляем вызов и имя в примере выше и добавляем, чтобы продемонстрировать функцию с.
var name = 'имя под окном <br/>'; var resultCon; function fn1 (myScope) {с (myScope) {resultCon.innerHtml += name; }} function myObj (myScope) {var name = 'name под myObj <br/>';С ним не удобно использовать, и вам нужно добавить к вызываемой функции. Некоторые люди могут задаться вопросом, можете ли вы вызвать следующее, чтобы изменить объем переменной в целом без изменения вызываемой функции?
с (myScope) {fn1 (); fn2 (); var obj = new myobj (); obj.dofunction ();}К сожалению, нет! Следовательно, вызов и применения могут использоваться повсюду в некоторых зрелых рамках, но с редко используется. При использовании JSHINT для обнаружения синтаксиса JS маленькие красные точки помечены. В некоторых руководствах по кодированию JS также рекомендуется использовать как можно меньше, потому что с изменениями в цепочке переменных по умолчанию он будет запутать более поздний персонал по техническому обслуживанию и некоторые соображения производительности. Пожалуйста, используйте с со счетом с осторожностью.
Приведенная выше статья глубоко понимает объем, и это направление функций JS является всем контентом, которым я делюсь с вами. Я надеюсь, что это может дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.