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