up
This commit is contained in:
parent
f99574f53b
commit
b0976b5253
153 changed files with 590 additions and 533 deletions
|
@ -0,0 +1,7 @@
|
|||
Да, это выглядит достаточно странно, поскольку объект `a` не создавался функцией `B`.
|
||||
|
||||
Но методу `instanceof` на самом деле вообще не важна функция. Он смотрит на её `prototype` и сверяет его с цепочкой `__proto__` объекта.
|
||||
|
||||
В данном случае `a.__proto__ == B.prototype`, поэтому `instanceof` возвращает `true`.
|
||||
|
||||
По логике `instanceof` именно прототип задаёт "тип объекта", поэтому `instanceof` работает именно так.
|
|
@ -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
|
||||
*/!*
|
||||
```
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue