javascript面向对象编程--继承--实例继承

类继承和原型继承的弊端:

         它们在客户端是无法继承DOM对象的,同时他们也不支持继承系统对象和方法

类继承:

function D(){ Date.apply(this.arguments);}

var d=new D();

alert(d.toLocaleString());//返回[object object]

说明类继承是无法是想对静态对象的继承,这是因为系统对象的结构比较特殊,它不是简单的函数题结构,声明、赋值、和初始化等操作都进行了独立的封装,所以无法实现在自定义构造函数中的那种操作

类继承:不继承原型属性,继承本地成员,支持多重继承,支持多参数 执行效率高,instanceof为false

原型继承:

 function D(){}

 D.prototype=new Date();

var d=new D();

alert(d.toLocalString());//返回错误提示

原型继承:继承原型属性,不继承本地成员,不支持多重继承,不支持多参数,执行效率高,instanceof为true

实例继承:

  构造函数是一种特殊结构的函数,没有返回值,通过this关键字来初始化实例对象,并且会返回值(其实省略return new运算表达式的值);因此在构造函数中完成对 类的实例化操作,然后返回实例对象,这就是实例继承的由来

function D(){//封装函数

    var d=new Date(); //实例化Date对象

   d.get=function(){

   alert(d.toLocaleString());

 }

 return d;//返回实例化对象

}

var d=new D();//实例化封装函数

d.get();

实例继承的优势:

 能够实现对所有对象的继承,包括自定义类、核心对象和Dom对象等,不过实例继承不是真正的继承机制,仅是一种模拟方法

缺点:

 实例继承无法传递动态参数,类的实例化操作封闭在函数体内实现的,所以不能通过call()和apply()方法传递动态参数

 只能返回一个对象,因此不支持多重继承

无法真正实现继承对象是封装类的实例,它仍然保持与原对象的实例关系如:

alert( d instanceof Date) //true

alert( d instanceof  D) //false 说明对象d不是对象D的实例

实例继承:继承原型属性,继承本地成员,不支持多重继承,不支持多参数,执行效率中,instanceof为false

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值