• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
前端露
博客园    首页    新随笔    联系   管理    订阅  订阅

javaScript 对象继承

7.继承

7.1原型链

function superType(){

                            this.property = true;

                            this. superA = 12;

                     }

superType.prototype. superA  = 23;

                     superType.prototype.getSuperValue = function(){

                            return this.property;

                     }

                     function subType(){

                            this.subproperty

                     }

                     subType.prototype = new superType();  // subType的原型被重新写,此刻super中的属性都变成subType原型中属性,那么superType的属性值被子类型的实例共享

                     subType.prototype.getSubValue = function(){

                            return this.subproperty;

                     }

                     var  a = new subType();

                     alert(a.superA) ; //12

                     alert(a.getSuperValue);  //true

这是一个原型链的继承。subType的原型被重新写,所以subype的实例就要写在他的后面。子类型可以重写超类型中的方法,也可以添加超类型中不存在的方法,但是都要放在重写原型的语句之后。

在通过原型链实现继承的情况下,搜索过程就得沿着原型继续向上:先搜索子类型的实例,再搜索子类型的原型,再搜索超类型的实例,最后搜索超类型的原型。

 

缺点:在创建子类型的实例情况下,不能向超类型的构造函数中传递参数;超类型中属性值被子类型实例共享。

7.2 借用构造函数

function SuperType(name){

                            this.name = name;

                     }

                     SuperType.prototype.sex = 1;

                     function SubType(name){

                            SuperType.call(this,name);

                            this.age = 29;

                     }

                     var instance = new SubType("tom");

                     alert(instance.name); //tom

                     alert(instance.sex);  //undefined

 

              缺点:在超类型的原型中定义的方法和属性对于子类型都是不可见的。

7.3 组合继承

将原型链和借用构造函数组合到一块。使用原型链实现对原型属性和方法的继承,通过借用构造函数来实现对实例属性的继承。

posted @ 2012-12-14 15:25  前端露  阅读(181)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3