Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.03.2016, 00:41
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

Function.prototype.bind
Приветствую вас, титаны джаваскриптовой мысли! )

Курил тут на днях сабж в очередной раз, и в "официальной" реализации полифилла наткнулся на непонятное.

https://developer.mozilla.org/en-US/.../bind#Polyfill

В общем, вопрос: для чего там нужен fNOP? Видно, что он используется в строке "this instanceof fNOP", но почему это нельзя заменить на "this instanceof fBound" и убрать звено, которое вроде как лишнее в цепочке прототипов?

Но вроде как считается, что в полифилах на MDN ничего лишнего не бывает.
Ответить с цитированием
  #2 (permalink)  
Старый 09.03.2016, 10:25
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Яростный Меч,
Могу ошибаться, я только учусь ©, но у Флэнагана в принципе такой же полифилл, но без использования конструктора fNOP(). Возможно, то что он ниже описывает в своей главе
Цитата:
(в ES5 функции, возвращаемые методом bind(), не имеют свойства prototype, и объекты, созданные связанными функциями- конструкторами, наследуют свойство prototype оригинального, несвязанного конструктора)
реализуется в этом полифилле?
Ответить с цитированием
  #3 (permalink)  
Старый 09.03.2016, 10:58
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

destus,
наверно, как-то с этим связано. Но у функций этого полифилла prototype всегда будет.
Возможно, цель была сделать для каждого результата bind свой независимый prototype, и при наличии "this.prototype" (в строке 19) без fNOP не обойтись..
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск