zoukankan      html  css  js  c++  java
  • 六种继承方式

     1 <!doctype html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>原型继承</title>
     6 </head>
     7 <body>
     8     
     9 </body>
    10 </html>
    11 <script src="jquery-1.11.3.js"></script>
    12 <script>
    13     function Person(name,age){
    14         this._name = name;
    15         this.age = age;
    16         
    17     }
    18     Person.prototype.eat = function(){
    19         console.log("吃--------------")
    20     }
    21     Person.prototype.sleep = function(){
    22         console.log("睡--------------")
    23     }
    24     function Man(name,age,sex){
    25         /*call(this,值1,值2,值3)和apply(this,[])都可以用来属性继承、方法借用等操作,参数1都是this的指向*/
    26         // Person.call(this,name,age);
    27         Person.apply(this,[name,age]);
    28         this.sex = sex;
    29     }
    30 /*原型继承*/
    31     // Man.prototype = Person.prototype;//原型继承,添加新方法,父级也会有,称为污染父级
    32 
    33 /*原型拷贝*/
    34 /*    for(var key in Person.prototype){
    35         Man.prototype[key] = Person.prototype[key];
    36     }*/
    37 
    38 /*原型链继承*/
    39     
    40     // Man.prototype = new Person();//原型对象指向发生改变,少了constructor,多了不必要的属性
    41 
    42 /*混合式继承*/    
    43     Man.prototype = {
    44         constructor:Man,
    45         __proto__:Person.prototype
    46     }
    47 
    48 
    49 /*寄生继承*/
    50     /*function fn(){}
    51     fn.prototype = Person.prototype;
    52     Man.prototype = new fn();
    53     Man.prototype.constructor = Man;*/    
    54 
    55     Man.prototype.run = function(){
    56 
    57     }
    58     console.log(new Person());
    59     console.log(new Man());
    60     console.log(Person.prototype);
    61     console.log(Man.prototype);
    62     
    63 /*ES6中的extends super继承*/
    64 
    65     class A{
    66         constructor(name,age,sex){
    67             this._name = name;
    68             this.age = age;
    69             this.sex = sex;
    70         }
    71         sing(){
    72             console.log("chang");
    73         }
    74         work(){
    75             console.log("工作");
    76         }
    77     }
    78     class B extends A{
    79         constructor(m,name,age,sex){
    80             super(name,age,sex);
    81             this.m = m;
    82         }
    83         play(){
    84             console.log("玩")
    85         }
    86     }
    87     console.log([A]);
    88     console.log([B]);
    89 </script>
  • 相关阅读:
    C语言基础---字符指针变量和字符数组的区别
    C语言基础---编写C语言代码过程中易忽略的点
    C语言简介---通过指针引用多维数组
    C语言基础---特殊的变量类型(结构体、枚举、共用体)
    C语言基础---指针简述
    C语言基础---C语言中的变量与内存空间的关系
    嵌入式开发中常用到的C语言库函数
    SVN使用---简介
    视频编解码相关基础知识(二)---H.264简介
    MybatisPlus MetaObjectHandler 配置
  • 原文地址:https://www.cnblogs.com/dinner/p/9060616.html
Copyright © 2011-2022 走看看