Instanceof в js

236
26 апреля 2017, 11:57

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

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
Answer 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__);

READ ALSO
JS Frameworks подходит для сайтов с БД?

JS Frameworks подходит для сайтов с БД?

Сайт будет состоять из select\insert\update БД MySql и вывод в табличном виде с авторизацией по правам select\insert\update

204
Как написать компаратор для сортировки?

Как написать компаратор для сортировки?

Как отсортировать числовой массив? Как отсортировать массив объектов по нескольким полям?

212
JavaScript. Сетка изображений

JavaScript. Сетка изображений

ЗдравствуйтеНужно создать сетку с изображениями (изображения выбираются рандомно), которая будет выводиться в div "pictures" после нажатия на кнопку

261