#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__);
Комментариев нет:
Отправить комментарий