Сегодня я продолжал изучать реализацию функции BIND, а также изучал заявления Shim и Polyfill. Давайте обобщу это сейчас.
if (! function.prototype.bind) {function.prototype.bind = function (OTHIS) {if (typeOf this! == "function") {// Ближайшая вещь, возможная для ECMASCRIPT 5 Внутренний ISCALBALE FUNCTION THREST NEW TYPERROR ("FUNCTION.Prototy.Bind - то, что пытается связать, не вызывает вызов"); } var aargs = array.prototype.slice.call (аргументы, 1), ftobind = this, fnop = function () {}, fbound = function () {return ftobind.apply (этот экземпляр fnop && othis? }; fnop.prototype = this.prototype; fbound.prototype = new fnop (); вернуть fbound; };}Это реализация в официальном документе. Я расскажу о том, что я хочу сказать в двух аспектах.
Первый - это параметр, использование агр.
var aargs = array.prototype.slice.call (аргументы, 1), вот чтобы извлечь массив параметров функции связывания. Первый параметр не имеет (то есть не является Othis), который является объектом, связанным с методом, а второй -
aargs.concat (array.prototype.slice.call (аргументы))); Здесь мы используем метод массива, вставляем параметры за массивом параметров. Обратите внимание, что эта функция возвращается и выполняется. Его массив параметров представляет собой массив параметров возвращаемой функции FBOUND, поэтому верхние и нижние массивы параметров отличаются, немного похоже на карри.
Второе - это контекст, где изменения контекста трудно понять. Функция связывания в основном используется для привязки контекста.
ftobind = это здесь - контекст объекта, за которым следует метод применения ниже, чтобы объект был связан использовать контекст
fnop.prototype = this.prototype;
fbound.prototype = new fnop ();
Здесь FNOP используется в качестве посредника для FBOUND, гарантируя, что FBOUND выполняется в контексте, когда он определен. первоначально
Bound.Prototype = Self.Prototype может интегрировать исходные атрибуты, но таким образом, оба атрибута объекта указывают на одно и то же место, модификация Bound.Prototype приведет к самостоятельному. Следовательно, переход через пустую функцию NOP может эффективно предотвратить эту ситуацию.
Приведенная выше статья о простой реализации функции Bind в Native JS - это весь контент, который я поделился с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.