我正在阅读来自 Mozilla 开发者网络的面向对象 JavaScript 简介,是时候在开始使用 node.js 之前学习如此严肃的 Javascript。
无论如何,继承对我来说似乎很模糊。从文档中复制并粘贴:
// define the Person Class
function Person() {}
Person.prototype.walk = function(){
alert ('I am walking!');
};
Person.prototype.sayHello = function(){
alert ('hello');
};
这很容易,但是Student
继承会使事情变得复杂。有没有其他人认为以下三个陈述本质上做同样的事情?
// 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;
我理解第一个(调用父构造函数),因为它与 Java、PHP 等非常相似。但随后问题开始了。
为什么需要调用Student.prototype
and?Student.prototype.constructor
需要一个明确的解释。为什么这个代码:
// define the Student class
function Student() {
// Call the parent constructor
Person.call(this);
}
var student1 = new Student();
继承还不够吗?
编辑:关于构造函数,这里已经回答了。