Разъяснение прототипов 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
,