Страницы

Поиск по вопросам

суббота, 7 марта 2020 г.

Instanceof в js

#javascript


Можете объяснить мне разницу между

function A() {}

A.prototype = {};

var a = new A();

alert( a instanceof A ); // true


и 

function A() {}

var a = new A();

A.prototype = {};

alert( a instanceof A); // false

    


Ответы

Ответ 1



instanceof проверяет, что хотя бы один из __proto__ в цепочке прототипов объекта совпадает с prototype функции. В первом случае первый же совпадёт (так работает new), а во втором - нет, поскольку у объекта осталась ссылка на тот объект, который был до присваивания. function A() {} A.prototype = {}; var a = new A(); console.log(a instanceof A); console.log(a.__proto__ === A.prototype); function A() {} var a = new A(); A.prototype = {}; console.log(a instanceof A); console.log(a.__proto__ === A.prototype); console.log(a.__proto__.__proto__ === Object.prototype); console.log(a.__proto__.__proto__.__proto__);

Комментариев нет:

Отправить комментарий