zoukankan      html  css  js  c++  java
  • js继承

    • 原型继承-prototype

       function Person(name,age){  
            this.name=name;  
            this.age=age;  
        }  


        Person.prototype.sayHello=function(){  
            alert("使用原型方法--Name:"+this.name);  
        }  
        var per=new Person("王二小",21);  
        per.sayHello();

          
        function Student(){} 
        Student.prototype=new Person("刘胡兰",33);  
        var stu=new Student();  
        Student.prototype.kill=yes;  
        Student.prototype.intr=function(){  
            alert(this.kill);  
        }  
        stu.sayHello();
        stu.intr();

    • 构造函数,又称使用对象冒充实现继承(实现原理:让父类的构造函数成为子类的方法,然后调用该子类的方法,通过this关键字给所有的属性和方法赋值)

       function  Parent(name){  
            this.name=name;  
            this.sayParent=function(){  
                alert("Parent:"+this.name);  
            }  
        }  

        function  Child(name,age){  
            this.parent=Parent;  
            this.parent(name);  

           delete this.parent;
            this.age=age;  
            this.sayChild=function(){  
                alert("Child:"+this.name+"age:"+this.age);  
            }  
        }  

        var parent=new Parent("潘金莲");  
        parent.sayParent(); 
        var child=new Child("张三",24);
        child.sayChild(); 

    • 采用call方法改变函数上下文实现继承(该种方式不能继承原型链,若想继承原型链,则采用5混合模式)

      实现原理:改变函数内部的函数上下文this,使它指向传入函数的具体对象

     function Parent(firstname)  
    {  
        this.fname=firstname;  
        this.age=40;  
        this.sayAge=function()  
        {  
            console.log(this.age);  
        }  
    }  
    function Child(firstname)  
    {  
     
        this.saySomeThing=function()  
        {  
            console.log(this.fname);  
            this.sayAge();  
        }  
       this.getName=function()  
       {  
           return firstname;  
       }   
    }  
    var child=new Child("张");  
    Parent.call(child,child.getName());  
    child.saySomeThing();

    • 采用Apply方法改变函数上下文实现继承(该种方式不能继承原型链,若想继承原型链,则采用5混合模式)

    实现原理:改变函数内部的函数上下文this,使它指向传入函数的具体对象

    与call方法区别在于,传入数组参数

    var child=new Child("张");  
    Parent.call(child,[child.getName()]);  
    child.saySomeThing();

    • 采用混合模式实现继承

    function Parent()  
    {  
     
        this.sayAge=function()  
        {  
            console.log(this.age);  
        }  
    }  
     
    Parent.prototype.sayParent=function()  
    {  
       alert("this is parentmethod!!!");  
    }  
     
    function Child(firstname)  
    {  
        Parent.call(this);  
        this.fname=firstname;  
        this.age=40;  
        this.saySomeThing=function()  
        {  
            console.log(this.fname);  
            this.sayAge();  
        }  
    }  
     
    Child.prototype=new  Parent();  
    var child=new Child("张");  
    child.saySomeThing();  
    child.sayParent();  

  • 相关阅读:
    tree命令详解
    rm 命令详解
    rename命令详解
    pwd命令详解
    mv命令详解
    mkdir命令详情
    find命令详解
    dockerfile中配置时区
    docker导入导出
    docker上传私有仓库报错
  • 原文地址:https://www.cnblogs.com/jeffry/p/5333441.html
Copyright © 2011-2022 走看看