zoukankan      html  css  js  c++  java
  • js对象继承的问题

    js继承方法有多种;

    1.利用call()和apply()的方法。

    call()里面接受多个参数;apply()只能接受两个参数。

    call()第一个参数是本身,后面都是他的属性和方法。

    apply()第一个参数是本身,第二个只能是数组。

    代码如下:

        <script type="text/javascript">
                function Person(name,sex){
                    this.name=name;
                    this.sex=sex;
                    this.info=function(){
                        console.log(this.name);
                    }
                }
                function Teacher(name,sex,course){
                    Person.call(this,name,sex)//Person.apply(this,[name,sex])
                    this.course=course;
                    this.infoCourse=function(){
                        console.log(this.course)
                    }
                }
                var t=new Teacher("张三","男","英语");
                console.log(t.name)
      
    </script>

    2.利用prototype独立出来给其添加子级。

    此方法可以添加多个属性和方法。

    主要是子级继承父级独立出来的东西。

    其父级没独立出来的不能传入。

    代码如下:

        <script type="text/javascript">
                function A(name){
                    this.name=name;
                }
                //给A添加一个方法
                A.prototype.say=function(){
                    console.log(22)
                }
                A.prototype.index=11;
                function B(name,age){this.age=age;
                }
                //子级继承父级的独立出来的东西
                B.prototype=new A();
                var b=new B(20,11)
                b.say();
                console.log(b.name)
                console.log(b.index)
            </script>

    3.利用复制的方法。

    思想是把父级里面的属性和方法便利一遍给给子级。

    方法如下:

            <script>
                function A(name){
                    this.name=name;
                    this.say=function(){
                        console.log("hello");
                    };
                };
                function B(name){
                    var a=new A(name);
                    //便利数组里的所有的元素
                    for(var i in a){
                        //获取里面的所有的属性和方法。
                        B.prototype[i]=a[i];
                    };
                };
                var b=new B("name");
                console.log(b.name);
            </script>
  • 相关阅读:
    .Net Web开发技术栈
    C#foreach原理
    C#位运算符
    python写12306抢票
    java语法学习
    建立个人知识体系
    struts2静态方法和动态方法调用
    springmvc跳转的几种方式
    JDBC驱动程序的四种方式
    eclipse用axis2发布webserver
  • 原文地址:https://www.cnblogs.com/zouxianlu/p/6496995.html
Copyright © 2011-2022 走看看