JavaScript的原型继承
JavaScript是一门面向对象的语言。在JavaScript中有一句很经典的话,万物皆对象。既然是面向对象的,那就有面向对象的三大特征:封装、继承、多态。这里讲的是JavaScript的继承,其他两个容后再讲。 JavaScript的继承和C++的继承不大一样,C++的继承是基于类的,而JavaScript的继承是基于原型的。 现在问题来了。 原型是什么? 原型我们可以参照C++里的类,同样的保存了对象的属性和方法。例如我们写一个简单的对象 function Animal(name) { this.name = name; } Animal.prototype.setName = function(name) { this.name = name; } var animal = new Animal("wangwang"); 我们可以看到,这就是一个对象Animal,该对象有个属性name,有个方法setName。要注意,一旦修改prototype,比如增加某个方法,则该对象所有实例将同享这个方法。例如 function Animal(name) { this.name = name; } var animal = new Animal("wangwang"); 这时animal只有name属性。如果我们加上一句, Animal.prototype.setName =