摘自:MDN >> Introduction to Object-Oriented JavaScript

一段代码直接说明问题:

[codesyntax lang="javascript"]

// 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

[/codesyntax]

在更现代的浏览器中(支持ECMAScript 5),以上步骤可以简化为一句话:

[codesyntax lang="javascript"]

Student.prototype = Object.create(Person.prototype);

[/codesyntax]

关于各浏览器对ECMAScript 5的功能支持,请参考:http://kangax.github.io/es5-compat-table/#