Изучаю книгу из серии You dont know JS: cover this & objects, Келли Симпсона! Возник вопрос по оператору instanceof! Не понятна следующая фраза из книги:
Если вы используете встроенную утилиту
.bind(...)для создания жестко привязанной функции, то у созданной функции не будет свойства.prototype. При использованииinstanceofс такой функцией прозрачно подставляется.prototypeцелевой функции, из которой была создана жестко привязанная функция.
Использование функции с жесткой привязкой для "вызова конструктора" крайне маловероятно, но если вы сделаете это, то она будет вести себя так, как если бы вы вызвали целевую функцию. Это значит, что вызов instanceof с жестко привязанной функцией также ведет себя и в соответствии с оригинальной функцией
Вот собственно то, что я решил проверить:
function foo(age){
this.age=age;
return this.name;
};
var a={name: "kristine"};
var b = foo.bind(a);
document.write(b()+"<br>"); //kristine
var c=new b(23);
document.write(c.age+"<br>"); //23
document.write(c instanceof foo); //true
Суть вопроса такова, что здесь не обычного? Ну создал я "конструктор" foo(), связал его "жёстко" с объектом a создал новый объект на основе конструктора, проверил этот новый объект, есть ли в цепочке его прототипов foo() вернулось true. В чём тогда суть того, о чем пишет автор книги? Просто данный автор славится тем, что разрушает "мифы" о Javascript, и вполне возможно, что я просто его недопонимаю местами, быть может он в очередной раз решил показать то место, где разработчики думают так, но на самом деле происходит другое! Просьба объяснить на доступном языке, можно даже с несложными примерами, тем кому не сложно! Спасибо!
.bind(), а именноbar = function( ){return MainFunc.apply( obj, arguments ) }намекая на то, что функция.bind( )создаёт "сквозную обёртку" , для функции, которую мы хотим "жестко" привязать, и поэтому пишет, что у какой-то из этих двух функций (либо внутренней либо внешней, я не понимаю) не будет ссылки.prototype,хотя как мы видим мой код работает! Поэтом я запутался! – Muranx Apr 29 '19 at 04:25