Переводчик: Front-end Xiaozhi
оригинал:medium.com/@jinlan119/…
Ставь лайк и смотри, поиск в WeChat【Переезд в мир】Обратите внимание на этого человека, который не имеет большого фабричного прошлого, но имеет восходящий и позитивный настрой. эта статья
GitHub
GitHub.com/QQ449245884…Он был включен, статьи были классифицированы, и многие мои документы и учебные материалы были систематизированы.
Все говорили, что нет проекта для написания резюме, поэтому я помог вам найти проект, и это было с бонусом.【Учебник по строительству】.
1. Как понимать JS вthis
ключевое слово?
Новички в JS всегда правыthis
ключевое слово сбивает с толку, потому что это не так в JS по сравнению с другими современными языками программированияthis
Ключевые слова немного сложны. «это» обычно относится к текущему объекту, но все происходит не так, как должно. в JSthis
Ключевое слово определяется вызывающей стороной функции, кто бы ее ни вызывал.this
смотря на что он указывает. Если звонящий не найден,this
укажет наwindows
объект.
принеси немного кукурузы
Первый пример простой. передачаtest
в объекте func()
,следовательноfunc()
где "это" указывает наtest
объект, поэтому напечатанныйprop
даtest
серединаprop
,Прямо сейчас42
.
var test = {
prop: 42,
func: function(){
return this.prop;
},
};
console.log (test.func()); // 42
Если мы позвоним напрямуюgetFullname
функция, второй пример распечатает'David Jones'
, потому что в это времяthis
Вызывающий абонент не может быть найден, поэтому по умолчаниюwindow
объект, напечатанныйfullname
Это глобально.
var fullname = ‘David Jones’
var obj ={
fullname: ‘Colin Brown’,
prop:{
fullname:’Aurelio Deftch’,
getFullname: function(){
return this.fullname;
}
}
}
var test = obj.prop.getFullname
console.log(test()) // David Jones
obj.prop.getFullname() // ‘Aurelio Deftch’
2. Из-заthis
Ключевые слова сбивают с толку, как это исправить
Есть много способов решить эту проблему, однако, какое бы решение вы ни выбрали, самое главное — знать, что вы решили позволитьthis
к какому объекту.
Как только вы это пойметеthis
Объект, на который указывает, вы можете напрямую изменить его на имя объекта. В противном случае используйтеbind
,call
,apply
Функции также могут помочь.
3. Что такое замыкание
Когда я впервые объяснял замыкания, я имел обыкновение говорить «функция внутри функции», однако это не точно описывало, что именно означает замыкание.
Замыкание — это создание объемлющей лексической области внутри другой области. Обычно он автоматически возвращается для создания этой лексической среды. Эта среда состоит из любых локальных переменных, которые были в области видимости при создании замыкания. Это похоже на микрофабрику, использующую это сырье для производства продуктов с определенными функциями.
function add(n){
var num = n
return function addTo(x){
return x + num
}
}
addTwo = add(2)
addTwo(5)
Другое применение замыканий — создание закрытых переменных и методов. JavaScript не поддерживает oops так же хорошо, как Java. В JS нет явного способа создания приватных методов, но замыкания могут создавать приватные методы.
4. Объясните продвижение переменных
Поднятие переменных — это поведение JavaScript по умолчанию, что означает, что все объявления переменных перемещаются в верхнюю часть текущей области видимости, и переменные можно использовать до их объявления. Инициализация не поднимается, подъем применяется только к объявлениям переменных.
var x = 1
console.log(x + '——' + y) // 1——undefined
var y = 2
5. Как JavaScript обрабатывает синхронные и асинхронные ситуации
Хотя JavaScript — это стек вызововодин потокязык программирования, но он также может обрабатывать некоторые асинхронные функции, используя механизм, называемый циклом событий. Понимание того, как работает JavaScript на базовом уровне, является ключевой частью понимания того, как JS обрабатывает асинхронность.
Как показано, стек вызовов — это место, где расположены функции. Как только функция будет вызвана, она будет помещена в стек. Однако асинхронные функции не сразу помещаются в стек вызовов, они помещаютсяОчередь задачи выполняется после того, как стек вызовов опустеет. Перенос событий из очереди задач в стек вызовов называетсяцикл событий.
6. Как понимать делегирование событий
Привязка прослушивателей событий к дереву DOM и использование обработчиков событий JS — типичный способ обработки ответов на события на стороне клиента. Теоретически мы могли бы прикрепить прослушиватели к любому элементу DOM в HTML, но из-за делегирования событий делать это расточительно и не нужно.
** Что такое делегирование событий? **
Это уловка, чтобы прослушиватели событий на родительских элементах также влияли на дочерние элементы. Как правило, распространение события (ловить и булькать) позволяет реализовать делегирование событий. Всплывание означает, что когда запускается дочерний элемент (цель), родитель этого дочернего элемента также может запускаться слой за слоем, пока он не столкнется с исходным слушателем (текущей целью), привязанным к DOM. Свойство захвата превращает фазу события в фазу захвата, позволяя событию перемещаться вниз к элементу; таким образом, направление возбуждения противоположно фазе всплытия. Значение по умолчанию для захватаfalse
.
7. Как понимать функции высшего порядка
Все в JavaScript является объектом, включая функции. Мы можем передавать переменные в качестве параметров функциям, как и функции. Мы вызываем функцию, которая принимает и/или возвращает другую функцию, называемую функцией высшего порядка.
8. Как отличить функции объявления от функций-выражений
// 声明函数
function hello() {
return "HELLO"
}
// 表达式函数
var h1 = function hello() {
return "HELLO"
}
Две функции будут определены в разное время. Объявления определяются во время синтаксического анализа, а выражения определяются во время выполнения, поэтому, если мы напечатаем консольh1
, это покажетHELLO
.
9. Объясните, как работает прототипное наследование
JavaScript не является дружественным к объектно-ориентированному языку программирования, но он по-прежнему использует идею наследования для реализации зависимостей и использует множество встроенных функций, чтобы сделать его гибким в использовании. Знание того, как работает прототипное наследование, поможет вам лучше понять JavaScript и избежать концептуального неправильного использования.
Лучше всего представить себе всю механику JavaScript в голове, чтобы понять наследование прототипов.
В JavaScript есть суперобъект, от которого будут наследоваться все объекты.'__ proto__'
остроконечный объектPrototype
внутренние свойства. Прототип содержит функцию-конструктор, из которой объект может создать экземпляр.__proto__
всегда существует в объекте и иерархически указывает на прототип, которому он принадлежит, до тех пор, покаnull
, который называетсяСеть прототипов.
10. Объясните строгий режим
Строгий режим используется для стандартизации обычной семантики JavaScript. Строгий режим может быть встроен в нестрогий режим, ключевое слово‘use strict’
. Код после использования строгого режима должен следовать строгим правилам синтаксиса JS. Например, точки с запятой используются после объявления каждого оператора.
общаться с
Статья постоянно обновляется каждую неделю. Вы можете выполнить поиск «Big Move to the World» в WeChat, чтобы прочитать и обновить ее как можно скорее (на одну или две статьи раньше, чем в блоге). Эта статья находится на GitHub.GitHub.com/QQ449245884…Он был включен, и многие мои документы были разобраны. Добро пожаловать в Звезду и совершенство. Вы можете обратиться в тестовый центр для ознакомления во время собеседования. Кроме того, обратите внимание на паблик-аккаунт и ответьте в фоновом режиме.Благосостояние, вы можете увидеть преимущества, вы знаете.