Как мы знаем, когда мы пытаемся получить доступ к свойству объекта, сначала проверяется, есть ли у объекта собственное свойство. Если не находит, то обходит прототип и проверяет, и так далее по цепочке прототипов.
Что касается вопроса, проверьте приведенный ниже фрагмент кода (http://jsbin.com/mabajidoti/edit?js,console)
function CT() {}
CT.prototype.myValue = 4;
var myObj = Object.create(CT);
console.log(myObj.myValue); //logs undefined
console.log(myObj.prototype.myValue) //logs 4
Из приведенного выше фрагмента первый оператор console.log, myObj.myValue возвращает undefined, хотя myValue доступен в его прототипе (2-й оператор console.log)? Разве он не должен был пройти цепочку прототипов, чтобы получить значение myValue?
CT.prototype
используется как прототип новых экземпляровCT
.Object.create(CT);
создает новый объект с самимCT
в качестве прототипа. Если вы хотите, чтобыCT.prototype
был прототипом, вам нужно было вызватьObject.create(CT.prototype)
. - person Felix Kling   schedule 04.11.2017