Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Function.prototype.bind (https://javascript.ru/forum/misc/61786-function-prototype-bind.html)

Яростный Меч 09.03.2016 00:41

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

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

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

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

Но вроде как считается, что в полифилах на MDN ничего лишнего не бывает.

destus 09.03.2016 10:25

Яростный Меч,
Могу ошибаться, я только учусь ©, но у Флэнагана в принципе такой же полифилл, но без использования конструктора fNOP(). Возможно, то что он ниже описывает в своей главе
Цитата:

(в ES5 функции, возвращаемые методом bind(), не имеют свойства prototype, и объекты, созданные связанными функциями- конструкторами, наследуют свойство prototype оригинального, несвязанного конструктора)
реализуется в этом полифилле?

Яростный Меч 09.03.2016 10:58

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


Часовой пояс GMT +3, время: 08:51.