你的位置:首页 > Java教程

[Java教程]js 继承


ECMAScript只支持实现继承(继承实际的方法),主要依靠原型链来实现。

1、原型链

基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法。

示例:

  function SuperType(){
        this.property = true; //实例属性
    }
    SuperType.prototype.getSuperValue = function(){//原型方法
        return this.property;
    }

    function SubType(){
        this.subproperty = false;
    }
    
    //SubType继承了SuperType
    SubType.prototype = new SuperType();
    
    SubType.prototype.getSubValue = function(){
        return this.subproperty;
    }
    
    var instance = new SubType();
    console.log(instance.getSuperValue()); //true
    console.log(instance.constructor); //SuperType

说明:

  以上代码创建了两个类型:SuperType 和 SubType。这两个类型都有各自的属性和方法,SubType继承了SuperType,继承是通过创建SuperType的实例,并把该实例赋给SubType的prototype。实现的本质是重写了SubType原型对象,代之以一个新类型的实例。

  SubType的新原型具有SuperType所有的属性和方法,同时其内部还有一个指针[[Prototype]],指向SuperType的原型,最终结果是instance指向了SubType的原型,SubType的原型又指向了SuperType的原型。

  instance.constructor指向的是SuperType,这是因为原来的SubType.prototype中的constructor被重写了。(实际上不是SubType的原型的constructor属性被重写了,而是SubType的原型指向了SuperType,而这个原型的constructor属性指向的是SuperType。)

  所有引用类型默认都继承了Object,这个继承也是通过原型链类实现的。所有函数的默认原型都是Object的实例,默认原型都会包含一个内部指针,指向Object.prototype。

 

陕西旅游指南攻略大全陕西旅游住哪里比较方便陕西旅游住宿攻略陕西旅游最佳时间陕西自驾游最佳路线广州周边短途旅游有哪里好玩? 十一广州去哪旅游好? 广州免费的旅游景点有哪些? 广州有哪些不错的游乐园? 2015年深圳平安夜去哪玩好? 深圳欢乐谷晚上进去还能玩什么? 深圳海岸城溜冰场门票多少钱? 深圳出发3天,到哪个城市玩好? 2015壶口瀑布风筝节时间及地点?黄河壶口瀑布风筝节什么时候? 五一旅游广东景点推荐?广东哪些景区五一期间有活动? 广东五一自驾游攻略?广东五一好去处? 哈尔滨极地馆团购便宜多少?哈尔滨极地馆团购需要多少人? 深圳哪里可以打野战?深圳哪里打野战最好玩? 从坪地汽车站去南澳西冲坐什么车? 深圳小梅沙海洋世界好玩吗?门票多少啊? 由坪洲百货到南澳西冲怎么去? DS4026S+FCN Datasheet DS4026S+FCN Datasheet MAX543BCSA+T Datasheet MAX543BCSA+T Datasheet DS4026S+HCN Datasheet DS4026S+HCN Datasheet 2013上海电影节 2013上海电影节 2013上海电影节 2013双十一淘宝销售额 2013双十一淘宝销售额 2013双十一淘宝销售额 西岸音乐节2013 西岸音乐节2013 西岸音乐节2013