js原型链(重点 难点) 建议:看源码

|------原型:prototype

|-----类似于类样式

|-----优化代码  构造器


|-----构造函数可以生成对象

 

|-----var date=new Date();  原型对象  Date是date的实例

|-----date.getFullYear();  date.getDate();

|-----原型链(继承,call apply instanceof)


|-----继承关系

<script>

         function person(){

                            this.foot=2;

                   }

         person.prototype.getFoot=function(){

                            return this.foot;

                   }

         //定义一个男的

         function man(){

                            this.head=1;//赋值

                   }

         //继承关系:形成一个基本的原型链

         man.prototype=new person();

         man.prototype.getHead=function(){

                            return this.head;//返回值

                   }

         var m1=new man();

         //alert(m1.getHead());

         //alert(m1 instanceof Object);

         alert(m1 instanceof person);

</script>

|-------call  无参 用法:

<script>

         function person(){

                            this.aaa=["jack","rose","wang"];

                   }

         //无参的构造器

         function man(){

                            person.call(this);

                   }

         //继承  链也形成了

         man.prototype=new person();

         var m1=new man();

         m1.aaa.push("xiao");

         alert(m1.aaa);

         var m2=new man();

         alert(m2.aaa);

</script>

|-------call  带参  用法:

<script>

         function person(name){

                            this.name=name;

                   }

         //无参的构造器

         function man(){

                            person.call(this,"雪山飞胡");

                            this.age=10;

                   }

         var m1=new man();

         alert(m1.age);

         alert(m1.name);

</script>

|------组合继承 : 类似于java的多态(重点  难点)

<script>

    function Humans(name){

        this.name=name;

        this.clothing=["trousers","dress","jacket"];

    }

    Humans.prototype.sayName=function(){

        alert(this.name);

    };

    function Man(name,age){

        Humans.call(this,name);    //继承属性

        this.age=age;

    }

    Man.prototype=new Humans();    //继承方法

    Man.prototype.sayAge=function(){

        alert(this.age);

    };

 

    var man1=new Man("mary",38);

    man1.clothing.push("coat");

    alert(man1.clothing);     //输出"trousers,dress,jacket,coat"

    man1.sayName();            //输出mary

    man1.sayAge();            //输出38

    var man2=new Man("tom",26);

    alert(man2.clothing);    //输出"trousers,dress,jacket"

    man2.sayName();            //输出tom

    man2.sayAge();            //输出26

</script>







  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

brid_fly

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值