Показать сообщение отдельно
Старый 18.08.2013, 00:59   #1
den
Дэвелопер
 
Аватар для den
 
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений
(для 2,419 пользователей)
Вопрос Классическое наследование (OOP)

function P() {
    
this.= [];
}
var 
= new P();

function 
C() {
}
C.prototype p;

var 
= new C(),
    
= new C();

console.log(a.== b.m); 
выведет true, значит ссылки указывают на один и тот же массив О_о
если не юзать "наследование", то все норм
почему так происходит?

тему криво назвал, уже не могу исправить :(

upd:
Вроде понял почему, потому что недостающие свойства у С берутся у p. А массивы (и объекты вообще) при присваивании не копируются, а просто приравниваются ссылки.

upd:
Чото нифига не так, даже если к прототипу приравнивать каждый раз новый экземпляр P, то тоже самое :(
В чем тогда дело?
(Offline)
 
Ответить с цитированием