Я пытаюсь понять наследование/прототипы javascript.Попытка понять/изучить/использовать наследование в javascript с .prototype-свойством
Я сделал это:
function Foo(par){
this.prop= par;
this.propTwo = par;
}
function Bar(par){
this.p=par;
}
Bar.prototype = new Foo();
Если я:
var myBar = new Bar("value");
myBar.propTwo
неопределен (я предполагаю, что это потому, что даже если я перезаписать прототип, я явно с помощью Bar
«построить функция "< <, пожалуйста, исправьте меня, если я ошибаюсь в этом допущении.
если я хочу, чтобы это Bar
inherit from Foo
, как мне создать экземпляр Bar
или переписать функции (ы) конструкций, чтобы получить propTwo
, также определенный/назначенный при создании объекта myBar
(обратите внимание, что тот же переданный аргумент присваивается обоим реквизитам)?
Я даже не уверен, что я делаю что-то «хорошее» здесь, поэтому, если я полностью ошибаюсь, это нормально сказать, если можно исправить, пожалуйста, не стесняйтесь в деталях.
Update: Я выбрал Ethan Brown's ответ, как правильно из-за 1 мин. разницы (ничего личного). Оба объяснения хорошо работают и используют два разных способа (на самом деле идея одна и та же, одна использует «применять» другой «вызов»).
Также Bergi's ссылки/комментарий он оказывается расширенный ответ/обоснование о том, почему не использовать этот подход:
What is the reason to use the 'new' keyword here?
Спасибо за ответы/материал.
Возможный дубликат [Исправлено наследование javascript] (http: // stackoverflow.com/questions/10898786/correct-javascript-inheritance) – Bergi
Этот код как есть даст опорную ошибку в конструкторе Bar: 'prop' не определено. Это опечатка? Должно ли это быть 'this.p = par;'? –
и вы выполняете 'Foo()' без параметров..so 'this.prop' и' this.propTwo' будет просто неопределенным ... – fiddler