我是 Javascript 新手,在找到正确的解决方案时遇到了一些麻烦。在定义具有属性的新子类时,这样做的正确/最佳实践是什么?我从 MDN 中提取了下面的代码,但它没有讨论如何通过继承传递属性。我需要的是一个超类和子类,它们具有在实例化期间定义的属性。超类的属性需要对所有子类可用,而子类的属性将只属于子类。有人可以指出我正确的方向吗?
// define the Person Class
function Person() {}
Person.prototype.walk = function(){
alert ('I am walking!');
};
Person.prototype.sayHello = function(){
alert ('hello');
};
// define the Student class
function Student() {
// Call the parent constructor
Person.call(this);
}
// inherit Person
Student.prototype = new Person();
// correct the constructor pointer because it points to Person
Student.prototype.constructor = Student;
// replace the sayHello method
Student.prototype.sayHello = function(){
alert('hi, I am a student');
}
// add sayGoodBye method
Student.prototype.sayGoodBye = function(){
alert('goodBye');
}
var student1 = new Student();
student1.sayHello();
student1.walk();
student1.sayGoodBye();
// check inheritance
alert(student1 instanceof Person); // true
alert(student1 instanceof Student); // true