This commit is contained in:
Ilya Kantor 2016-11-14 23:41:18 +03:00
parent f99574f53b
commit b0976b5253
153 changed files with 590 additions and 533 deletions

View file

@ -0,0 +1,7 @@
Да, это выглядит достаточно странно, поскольку объект `a` не создавался функцией `B`.
Но методу `instanceof` на самом деле вообще не важна функция. Он смотрит на её `prototype` и сверяет его с цепочкой `__proto__` объекта.
В данном случае `a.__proto__ == B.prototype`, поэтому `instanceof` возвращает `true`.
По логике `instanceof` именно прототип задаёт "тип объекта", поэтому `instanceof` работает именно так.

View file

@ -0,0 +1,22 @@
importance: 5
---
# Странное поведение instanceof
Почему `instanceof` в коде ниже возвращает `true`, ведь объект `a` явно создан не `B()`?
```js run
function A() {}
function B() {}
A.prototype = B.prototype = {};
var a = new A();
*!*
alert( a instanceof B ); // true
*/!*
```