Я пытаюсь понять, как работают прототипы. У меня есть этот пример:Как совместить функцию конструктора и свойство прототипа
function Person(name) {
if (arguments.length > 0)
this.init(name);
}
Person.prototype.init = function(name) {
this.name = name();
}
Employee.prototype = new Person();
function Employee (name, id) {
if (arguments.length > 0) {
this.init(name);
this.id = id;
}
}
var employee = new Employee("frank",01);
alert(employee.name);//returns frank
Я пытаюсь выяснить, как объединить первые два раздела, и назначить «INIT» свойство в функции конструктора. У меня есть, но это ничего не возвращает:
function Person(name) {
if (arguments.length > 0)
this.init = function(name) {
this.name = name;
}
}
Employee.prototype = new Person();
function Employee (name, id) {
if (arguments.length > 0) {
this.init(name);
this.id = id;
}
}
var employee = new Employee("frank",01);
alert(employee.name);//returns nothing
Я предполагаю, что я делаю что-то неправильно в присвоении инициализации, но я не знаю, что. Изменение начального свойства на
this.init(name) = function(name) {
также не работает.
Не пытайтесь использовать какой-либо метод 'init' вообще! Просто выполните работу в конструкторе! – Bergi