js高级——原型对象继承的实现

1、原型继承:利用原型中的成员可以被和其相关的对象共享这一特性,可以实现继承
2、原型继承的写法
(1)给原型对象中添加成员(通过对象的动态特性,其实不是严格意义上的继承)
function Person (name , age){
    this . name = name ;
    this . age = age ;
}

Person . prototype . sayHello = function (){
    console . log ( "sayHello()" ) ;
} ;

var p = new Person ( "张学友" , 18 ) ;
p. sayHello () ; //通过原型去添加sayHello()方法
//这里的p对象就继承了原型对象

就是说原来这个对象里面没有某个方法/属性,通过上面这种方式去添加成员。对象继承原型,然后原型里面新增方法,那么这个对象里面就有这么一个方法


(2)直接替换原型对象:其实原理还是对象继承原型(虽然可以实现原型继承,但是很可能原有原型中的成员会丢失)
function Person (name , age){
    this . name = name ;
    this . age = age ;
}

var parent = { //让p对象继承parent对象
    sayHello : function (){
        console . log ( "你好" ) ;
    }
    } ;
Person . prototype = parent ;                 //把parent变成构造函数的原型就可以让p对象去继承parent对象了

var p = new Person ( "张学友" , 18 ) ;
p. sayHello () ;



(3)利用混入的方式给原型对象添加成员(还是对象继承原型)
function Person (name , age){
    this . name = name ;
    this . age = age ;
}

var parent = {
    sayHello : function (){
        console . log ( "你好呀" ) ;
    }
} ;
for ( var k in parent){
    Person . prototype [k] = parent[k] ; //因为是要给原型添加这个sayHello()方法
}

var p = new Person ( "张学友" , 18 ) ;
p. sayHello () ;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值