我是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
答案 0 :(得分:1)
可以使用this
关键字访问实例变量。您可以并且应该在构造函数中初始化实例变量:
function Person(name) {
this.name = name;
}
var bob = new Person("Bob");
alert(bob.name);
当你继承子类时,超类的实例变量将自动可用于子类。