Я проверил вопросы: javascript what is property in hasOwnProperty? и javascript hasOwnProperty and prototype , но не смог найти ответ на мою проблему. Вот мой код: Но некоторые ответы озадачивают меня (НЕ, как ожидалось).Javascript hasOwnProperty прототип и наследование
function School(schoolName) {
this.schoolName = schoolName;
}
School.prototype.printSchoolName = function() {
console.log(this.schoolName);
}
function Student(studentName, schoolName) {
this.studentName = studentName;
this.schoolName = schoolName; // alternative : School.call(this, schoolName);
}
Student.prototype = new School(); // force l'héritage des propriétés de School
Student.prototype.printStudentName = function() {
console.log(this.studentName);
}
var s = new Student("Victor", "IUT");
s.printStudentName(); // works fine
s.printSchoolName(); // works fine
console.log(Student.prototype.hasOwnProperty("printStudentName")); // works as expected: true
console.log(Student.prototype.hasOwnProperty("printSchoolName")); // works as expected: false
console.log(Student.prototype.hasOwnProperty("studentName")); // NOT as expected: false
console.log(School.prototype.hasOwnProperty("schoolName")); // NOT as expected: false
console.log(Object.getOwnPropertyNames(new School())); // schoolName
console.log(Object.getOwnPropertyNames(new Student())); // studentName, schoolName
Последние 2 предупреждений не упоминают методы, хотя эти методы были обнаружены hasOwnProperty. Непонятные. Спасибо.
Скажите **, что ** вы ожидали, что вы видите вместо этого, и почему это не то, что вы ожидаете. –
BTW после моего неудачного ответа Я также вижу, что ваше наследство нереально ... Студент наследует школу? –
Почему вы ожидали, что 'Student.prototype' будет иметь собственное свойство' studentName'? И что вы ожидали от его ценности? – Bergi