2015-07-31 3 views
0

Почему он возвращает false?Javascript instanceof странное поведение

function f(){ return f; } 
new f() instanceof f; // Prints false instead of true 

Как я понимаю, в данном конкретном случае instanceof следует проверить что-то вроде:

newObj.__proto__ === f.prototype.

И newObj.__proto__ должен быть установлен автоматически по телефону new f().

ответ

5

Функции конструктора неявно возвращают this. this: экземпляр функции-конструктора и поэтому, если вы вернетесь this, функция будет оценивать значение true.

Вы делаете не возвращение this. Вы возвращаете f, который не является экземпляром конструктора, поэтому выражение возвращает false.

+0

и я думаю, что когда вы пишете новое, лучше использовать новый F() instanceof f; –

+2

@EndritShala JavaScript чувствителен к регистру, поэтому 'F' - не тот же символ, что и' f' – Pointy

+0

@Petrichor получил его, спасибо –

Смежные вопросы