apply实现继承

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>

</body>
</html>

<script>
//     apply实现继承
//    学生类本来不具备任何方法,
//    但是在 Person.apply(this,arguments)  后,
//    他就具备了 Person类的sayhello方法和 所有属性。
//    在 Print.apply(this,arguments) 后就自动得到了  show() 方法。


    //人对象
    function Person(name,age){
        this.name=name     //名字
        this.age=age       //年龄
        this.sayhello=function(){
            console.log("人对象方法")
        }
    }
    Person.prototype={
        buy:function(){
            console.log('测试是否能够继承原型中的方法')
        }
    }

    //输出打印对象
    function Print(){            //显示类的属性
        this.funcName="我是打印对象"
        this.show=function(){
           console.log ('打印对象方法')
        }
    }

    //学生对象
    function Student(name,age,grade,school){    //学生类
        Person.apply(this,arguments)
        Print.apply(this,arguments)
        this.grade=grade                  //年级
        this.school=school                    //学校
    }



    /*子类继承两个父类*/
   /* 也就是通俗一点讲就是:
    用student去执行Person这个类里面的内容,
    在Person这个类里面存在this.name等之类的语句,
    这样就将属性创建到了student对象里面*/
    var lisi=new Student("tom",13,6,"清华小学")
    //学生继承了人和打印对象,则拥有了人的属性和方法
    /*打印父类*/
    lisi.show()
    /*人父类*/
    lisi.sayhello()
    /*无法继承原型对象中的方法*/
    alert(lisi.buy())
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值