Принятый ответ кажется неверным.Исходя из того, что Mozilla говорит о OO JavaScript , правильный способ сделать это:
var Person = function(firstName) {
this.firstName = firstName;
};
function Student(firstName, subject) {
// Call the parent constructor, making sure (using Function#call)
// that "this" is set correctly during the call
Person.call(this, firstName);
// Initialize our Student-specific properties
this.subject = subject;
};
// Create a Student.prototype object that inherits from Person.prototype.
// Note: A common error here is to use "new Person()" to create the
// Student.prototype. That's incorrect for several reasons, not least
// that we don't have anything to give Person for the "firstName"
// argument. The correct place to call Person is above, where we call
// it from Student.
Student.prototype = Object.create(Person.prototype); // See note below
// Set the "constructor" property to refer to Student
Student.prototype.constructor = Student;
// Example usage:
var student1 = new Student("Janet", "Applied Physics");
Как вы можете ясно видеть, Mozilla указывает, что распространенная ошибка - использовать «new Person»() ", чтобы создать Student.prototype.Следовательно, принятый ответ вводит в заблуждение.
Я на самом деле проверил это в своем текущем проекте, и путь Mozilla правильный, хотя приведенный выше ответ не работает.