js对象:继承
构造函数的继承-链接:http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_inheritance.html
call,apply,prototype--链接: http://blog.csdn.net/haijiaoxiaowu/article/details/5148657
//比如,现在有一个"动物"对象的构造函数。 function Animal(){ this.species = "动物"; } //还有一个"猫"对象的构造函数。 function Cat(name,color){ this.name = name; this.color = color; } //怎样才能使"猫"继承"动物"呢?
一、构造函数apply/call绑定
将父对象的构造函数绑定在子对象上,在子对象构造函数中通过调用apply()或call()方法实现。
function Cat(name,color){ Animal.apply(this, arguments); this.name = name; this.color = color; } var cat1 = new Cat("大毛","黄色"); alert(cat1.species); // 动物
二、借用prototype属性
将子对象构造函数的prototype指向父对象的实例(此时清空了prototype属性的所有内容),再重新将prototype的constructor属性指向子对象的构造函数。怎么实现的呢?因为子对象可以通过_proto_属性,按照原型链去寻找父对象的属性和方法,从而实现了继承。
//如果"猫"的prototype对象,指向一个Animal的实例,那么所有"猫"的实例,就能继承Animal了。 Cat.prototype = new Animal(); Cat.prototype.constructor = Cat; var cat1 = new Cat("大毛","黄色"); alert(cat1.species); // 动物