// 构造函数 function Animal() { this.species = "动物"; } function Cat(name, color) { this.name = name;    this.color = color; }
// 1, 使用call或者apply方法,将父对象的构造函数绑定在子对象上,即在子对象构造函数中加一行 // function Cat(name, color) { // Animal.apply(this, arguments); // this.name = name; // this.color = color; // } // var cat1 = new Cat('大猫','黄色'); // console.log(cat1);

// 2. 第二种 prototype属性 // 第一行,将prototype对象指向一个Animal的实例 // Cat.prototype = new Animal(); // 第二行,constructor属性,指向它的构造函数, // 如果没有Cat.prototype = new Animal(),Cat.prototype.constructor指向Cat // 现在指向Cat.prototype.constructor指向Animal // Cat.prototype.constructor = Cat;   // var cat1 = new Cat('大毛','黄色'); // console.log(cat1);
// 3.直接继承prototype // function Animal() {   // } // Animal.prototype.species = "动物"; // Cat.prototype = Animal.prototype; // Cat.prototype.constructor = Cat; // var cat1 = new Cat('大毛','黄色'); // console.log(cat1.species);
// 5. 拷贝继承 // function Animal() {} // Animal.prototype.species = "动物"; // function extend(Child, Parent) { // var p = Parent.prototype; // var c = Child.prototype; // for(var i in p) { // c[i] = p[i]; // } // c.uber = p; // } // extend(Cat,Animal); // var cat1 = new Cat('大毛','黄色'); // console.log(cat1);

 摘自阮老师的博客:http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_inheritance.html

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄