且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

javascript面向对象编程子类如何继承父类分析

更新时间:2022-09-09 17:48:03

javascript面向对象编程子类如何继承父类分析?

在javascript面向对象中 怎样能使子类继承父类?我这边可以用两种常见的方式!一:构造函数继承  二:原型(prototype)模式继承

一:构造函数模式实现继承:假如页面上有animal函数 和 cat函数 那么我怎么样能让cat函数继承与animal函数呢?假如页面有如下两个函数!!

function animal(){

     this.special = "动物";

}

function cat(name,age){

       animal.apply(this,arguments)  //用apply或call就可以实现子类继承父类 这样调用父类就可以了!!!

       this.name = name;

       this.age = age;

}

     我们可以测试下 :

     var obj = new cat("mao",11);

      console.log(obj.special );  我们在火狐firebug下 可以看到输出“动物” 那么就实现了子类继承与父类了!

二 : 第二种方式用prototype模式也可以实现子类继承与父类!还是上面两个函数

       

function animal(){

     this.special = "动物";

}

function cat(name,age){

       cat.prototype = new animal(); //我们将cat的prototype对象指向一个animal的实例  它相当于完全删除了prototype 对象原先的值,然后赋予一个新值。
        cat.prototype.constructor  = cat;
        /* 原来,任何一个prototype对象都有一个constructor属性,指向它的构造函数。也就是说,cat.prototype 这个对象的constructor属性,是指向cat的。
我们在前一步已经删除了这个prototype对象原来的值,所以新的prototype对象没有constructor属性,所以我们必须手动加上去,否则后面的"继承链"会出问题。
总之,这是很重要的一点,编程时务必要遵守。即如果替换了prototype对象, */  下面我们是测试!!!
    var obj = new cat("xiao",12);
    console.log(obj.species);

       this.name = name;

       this.age = age;

}

同样的道理在火狐下 我们也可以看到输出“动物”也实现子类继承与父类!!










本文转自 涂根华 51CTO博客,原文链接:http://blog.51cto.com/tugenhua/735733,如需转载请自行联系原作者