JavaScript должен быть одним из самых популярных кроссплатформенных языков сейчас. Я играл с некоторыми интересными вещами на передней части, но я обнаружил, что не овладел этим языком. Я был немного небрежным, поэтому я хотел воспользоваться временем, когда у меня есть время, чтобы добавить несколько пропущенных вещей.
Это скрытое связывание
Сначала это было то, что я был смущен, но когда я впервые увидел это, я не понял. Затем, в аналогичных ситуациях, та же проблема может быть решена аналогичными методами. Поэтому я попытался разобраться в знаниях в нем для легкого поиска.
Это ошибка проектирования языка JavaScript, но кажется, что эта ошибка неизбежна, функции - это объекты, массивы - это объекты и т. Д. Примеры из «JavaScript: хорошие части»
Кода -копия выглядит следующим образом:
Функция добавить (a, b) {return a+b}
var sum = add (3,4);
console.log (sum); // sum = 7
В настоящее время результат суммы составляет 7.
Кода -копия выглядит следующим образом:
> TypeOf Add
> 'номер'
Как вы можете видеть здесь, тип добавления является числовым значением.
При вызове функции в этом режиме это связано с глобальной переменной.
То есть в текущей среде мы можем назвать это таким образом
Кода -копия выглядит следующим образом:
this.add (3,4)
Это неявное связывание этого, и это будет связано по -разному.
Кода -копия выглядит следующим образом:
var hello = function () {
вернуть "Привет" + this.name;
};
name = 'this';
console.log (hello ());
Тогда мы будем привет, это. И когда
Кода -копия выглядит следующим образом:
var hello = function () {
вернуть "Привет" + this.name;
};
var user = {
Привет: Привет,
Имя: 'Phodal',
};
console.log (user.hello ());
В настоящее время Hello в пользовательской функции Hello и, в нашем понимании, как это возможно? Так что это ошибка.
Если мы определим переменную в этом методе и присвоили этому значение, то внутренняя функция может получить это через эту переменную.
var that = это
Поэтому, когда ситуация немного сложнее, нам нужно использовать:
Кода -копия выглядит следующим образом:
НДС, что = это;
Советы:
1. Область этой переменной всегда определяется ее ближайшей функцией окружения.
2. Используйте локальную переменную (такую как я, я, что), чтобы сделать это привязку доступной внутри.
Простой пример:
Кода -копия выглядит следующим образом:
var m = function () {
this.name = "m";
};
var mm = function () {
z = new m ();
this.name = "mm";
z.printname = function () {
console.log (this.name);
};
return z.printname ();
};
var mm = new MM;
В настоящее время это указывает на функцию М, которая является самой ММ. Если мы удалим это из М, то возвращается неопределенным. Таким образом, мы создаем псевдоним для текущего объема этого, например, самого или и т. Д.:
Кода -копия выглядит следующим образом:
var mm = function () {
z = new m ();
this.name = "mm";
var self = это;
z.printname = function () {
console.log (self.name);
};
return z.printname ();
};
Таким образом, вы можете вернуть мм. Кроме того, метод связывания функции обратного вызова может использоваться в ES5.
Кода -копия выглядит следующим образом:
var mm = function () {
z = new m ();
this.name = "mm";
z.printname = function () {
console.log (this.name);
} .bind (это);
return z.printname ();
};
Привязка может связывать методы с приемником.
другой
Еще один привет, мир
Я встречался с печати («Привет») («Мир») случайно, а затем вывел «Привет, мир».
Так называемые функции высшего порядка кажутся очень полезными. Если вам интересно, вы можете проверить следующую статью.