Разъяснение прототипов JavaScript

Предположим, у меня есть дочерняя функция:

function Child() {}

и иметь родительскую функцию:

function Parent() {}

затем я установил прототип Child в новый экземпляр Parent:

Child.prototype = new Parent()

путаница каждый раз, когда я создаю новый экземпляр Child

var c = new Child()

Будет ли Родитель снова создан?

1 ответ

Решение

Он создается только один раз. Каждый раз, когда вы звоните new Child() новый Child объект создан и тот же Parent объект должен быть его прототипом. Вы можете подтвердить это, выполнив следующее ( jsfiddle):

function Child() {}
function Parent() {
    this.aParentProp = { name : "Parent" };
}
Child.prototype = new Parent();
var c1 = new Child();
var c2 = new Child();

if(Object.getPrototypeOf(c1) === Object.getPrototypeOf(c2)) {
    alert("same prototype!");
}

if(c1.aParentProp === c2.aParentProp) {
    alert("same property!");
}

И то и другое c1 а также c2 имеют те же prototype используя Object.getPrototypeOf. Кроме того, оба c1и c2"s aParentProp указывает на тот же экземпляр объекта, показывая, что оба c1 а также c2 делить то же самое Parent объект для их prototype,

Другие вопросы по тегам