Каждая созданная вами функция имеет свойство prototype
, и она начинает свою жизнь как пустой объект. Это свойство бесполезно, пока вы не используете эту функцию в качестве функции конструктора, то есть с ключевым словом «new».
Это часто путают со свойством __proto__
объекта. Некоторые могут запутаться, за исключением того, что свойство prototype
объекта может дать им прото объекта. Но это не так. prototype
используется для получения __proto__
объекта, созданного из конструктора функции.
В приведенном выше примере:
function Person(name){
this.name = name
};
var eve = new Person("Eve");
console.log(eve.__proto__ == Person.prototype) // true
// this is exactly what prototype does, made Person.prototype equal to eve.__proto__
Надеюсь, это имеет смысл.