• js实现继承的方法


    1.对象冒充

    function Parent(username){
    
      this.username=username;
    
      this.hello=function(){
    
        console.log(this.username);
    
      }
    
    }
    
    /*
         1.用this.method作为临时属性,指向parent对象
         2.执行this.method方法,执行Parent指的对象属性
         3.销毁this.method属性,此时的child已经有了parent的属性和方法
     */
    
    function Child(username,passsword){
    
      this.method=Parent;
    
      this.method(username);
    
      delete this.method;
    
      this.password=password;
    
      this.word=function(){
    
        console.log(this.password)
    
      }
    
    }
    
    var parent=new Parent("abc");
    
    var child=new Child("123","123");
    
     
    
    parent.hello();
    
    child.hello();
    
    child.word();
    

     2.call()方法实现继承

    call方法是Function类中的方法
    call方法的第一个参数的值赋值给类(即方法)中出现的this
    call方法的第二个参数开始依次赋值给类(即方法)所接受的参数

      function test(str){
    
      console.log(this.name+" "+str);
    
    }
    
    var obj=new Object();
    
      obj.name="doctor";
    
    test.call(obj,'我是传入的str');
    
    
    function Parent2(username){
    
      this.username=username;
    
      this.hello=function(){
    
        console.log(this.username);
    
      }
    
    }
    
    
    function Child2(username,password){
    
    
      Parent2.call(this,username);
    
      this.password=password;
        
      this.word=function(){
    
        console.log(this.password);
    
        }
    
    }
    
    var parent2=new Parent("p1");
    
    var child2=new Child2("C2","cpwd");
    
    
    parent2.hello();
    
    child2.hello();
    
    child2.word();
    

     3.apply()方法

    apply方法接受2个参数,
    A、第一个参数与call方法的第一个参数一样,即赋值给类(即方法)中出现的this
    B、第二个参数为数组类型,这个数组中的每个元素依次赋值给类(即方法)所接受的参数

        function Parent3(username){
            this.username=username;
            this.hello=function(){
                console.log(this.username);
            }
        }
    
        function Child3(username,password){
            /*
                调用Parent的方法
             */
            Parent3.apply(this,new Array(username));
            this.password=password;
            this.word=function(){
                console.log(this.password);
            }
        }
    
        var parent3=new Parent3('abc');
        var child3=new Child3('def','123');
    
        parent3.hello();
        child3.hello();
        child3.word();
    

     4.原型链法

        function Person(){
    
        }
        Person.prototype.hello="hello";
        Person.prototype.sayHello=function(){
            console.log(this.hello);
        }
    
        function Kid(){
    
        }
        Kid.prototype=new Person();
        Kid.prototype.world="world";
        Kid.prototype.sayWord=function(){
            console.log(this.world);
        }
        var c=new Kid();
    
        c.sayHello();
    
        c.sayWord();
    

     5.混合方式

        function Parent(hello){
            this.hello=hello;
        }
        Parent.prototype.sayHello=function(){
            console.log(this.hello);
        }
    
        function Child(hello,word){
            Parent.call(this,hello);//将父类的属性继承过来
            this.word=word;
        }
        Child.prototype=new Parent();//将父类的方法继承过来
        Child.prototype.sayWord=function(){
            console.log(this.word);
        }
        var c=new Child("123","456");
        c.sayWord();
        c.sayHello();
    
  • 相关阅读:
    python调用函数实现数据的增删改查(1)
    VA Code编写html(1)
    python 跑服务器,访问自己制作的简单页面
    python调用函数实现数据的增删改查(2)
    VS Code编写html(2)
    python编写简单的html登陆页面(4)
    python编写简单的html登陆页面(1)
    虚拟机端口映射!
    VIM 主题管理
    Vim 窗口管理插件
  • 原文地址:https://www.cnblogs.com/anxiaoyu/p/6526653.html
Copyright © 2020-2023  润新知