Может кто-то сказать разницу между тем, как следующий набор кода выполняется в глубину.Создание нескольких экземпляров производного класса в javascript
function Person(){
this.name = "Jagadish";
}
Person.prototype.getName = function(){
return this.name;
}
function Employee(designation){
this. designation = designation;
}
Employee.prototype = Object.create(Person.prototype);
Employee.prototype.constructor = Employee;
Employee.prototype.getDesignation = function(){
return this.designation;
}
var employee1= new Employee("Cons");
console.log(employee1.getName()+ " --- "+ employee1.designation);
// Jagadish --- Cons
var employee2= new Employee("Dev");
console.log(employee2.getName()+ " --- "+ employee2.designation);
// Jagadish --- Dev
Я сомневаюсь, как изменить код, чтобы для каждого экземпляра класса Employee у меня было другое имя.
Edit:
Я знаю, что я должен вызвать конструктор Person, но мои сомнения. Позвольте мне поставить два метода кода.
Метод 1:
function Person(name){
this.name = name;
}
Person.prototype.getName = function(){
return this.name;
}
function Employee(name, designation){
//Person.call(this, name);
this. designation = designation;
}
Employee.prototype = Object.create(Person.prototype);
Employee.prototype.constructor = Employee;
Employee.prototype.getDesignation = function(){
return this.designation;
}
new Employee("Jagadish", "Cons");
Рисунок 1:
Способ 2:
function Person(name){
this.name = name;
}
Person.prototype.getName = function(){
return this.name;
}
function Employee(name, designation){
Person.call(this, name);
this. designation = designation;
}
Employee.prototype = Object.create(Person.prototype);
Employee.prototype.constructor = Employee;
Employee.prototype.getDesignation = function(){
return this.designation;
}
new Employee("Jagadish", "Cons");
Рис 2:
Мои сомнения в методе 1 мы не имеем имя свойства, потому что мы не называется Person конструктора. Но в методе 2 мы имеем свойство name, потому что мы вызывали конструктор Person. Но почему свойство name присваивается объекту Employee вместо Person.
Вы должны передать имя и обозначение конструктору Employee, а затем передать только имя конструктору Person. – jfriend00
Свойства прототипа являются общими, собственных свойств нет, поэтому используйте собственные свойства. – dandavis