2014-11-30 2 views
0

У меня есть следующий код:Javascript прототип общие ценности спутанность

function Bar() { 
} 

Bar.prototype.c = 0; 

var foo = new Bar(); 
foo.c = 20; 

var test = new Bar(); 
console.log(test.c); 

Значение я получаю в консоли 0. Я думал, что эти объекты будут одни и те же объект-прототип, таким образом, выходной сигнал будет 20. Почему это не так?

+0

Его называют теневым, обеспечивая значение экземпляра или ближе к экземпляру в цепочке прототипов. Это и многое другое объясняется здесь: http://stackoverflow.com/questions/16063394/prototypical-inheritance-writing-up/16063711#16063711 мутировать значение прототипа экземпляра, и он изменит прототип. – HMR

ответ

1

У них есть один и тот же прототип.

Однако, если вы установили foo.c, вы устанавливаете свойство на foo, а не его прототип.

Смежные вопросы