zoukankan      html  css  js  c++  java
  • class与class的继承

     1 class Point{
     2   constructor(x,y){
     3     this.x = x;
     4     this.y = y;
     5   }
     6   toString(){
     7     return '(' + this.x + ',' + this.y + ')';
     8   }
     9 }
    10 var foo = new Point(2,3);
    11 console.log(foo.x);
    12 // es6类完全可以看作构造函数的另一种写法
    13 // type of "function"
    14 // Point === Point.prototype.constructor    true
    15 
    16 // 构造函数的prototype属性在es6的"类"上继续存在,事实上类的所有方法都定义在类的 prototoye 属性上
    17 
    18 // 在类的实例上调用方法,其实就是调用类原型上的方法
    19 
    20 // 类的内部定义的所有方法都是不可枚举的
    21 
    22 // 类和模块的内部默认使用严格模式
    23 
    24 // constructor是类的默认方法通过new命令生成实例对象时自动调用该方法.
    25 
    26 // 一个类必须有constructor方法,如果没有显式定义,默认添加一个空的constructor方法
    27 
    28 // 类必须使用new来调用,否则报错
    29 
    30 // 与es5一样实例的属性除非显式定义在其本身(即this对象上),否则都是定义在原型(即class)上
    31 
    32 // class表达式
    33 
    34 const myClass = class Me{}
    35 
    36 const foo = class{};    // 省略类名
    37 
    38 // 类不存在变量提升 (与继承有关)
    39 
    40 // 必须在定义后使用,否则报错
    41 
    42 
    43 // this指向
    44 
    45 // 类的方法内部如果含有this,它将默认指向类的实例
    46 
    47 // class的取值函数getter和存值函数setter
    48 
    49 // class的静态方法
    50 // 在一个方法前加上static关键字就表示该方法不会被实例继承,而是直接通过类调用,称为静态方法
    51 // 父类的静态方法可以被子类继承,静态方法也可以从super对象上调用
    52 
    53 // class 实例属性/静态属性
    54 // 在实例属性写法前面加上static关键字就可以了
    55 
    56 // class的继承
    57 
    58 // class通过extends实现继承
    59 // super关键字表示父类的构造函数
    60 // 子类必须在constructor方法中调用super方法,否则新建实例会报错,这是因为子类没有自己的this对象,而是继承父类的this对象
    61 class point {}
    62   class colorPoint{
    63     constructor() {
    64       super();    // 调用父类constructor方法
    65     }
    66   }
    67 
    68 // 在子类的构造函数中只有调用super之后才可以使用this关键字,否则报错
    69 
    70 // super关键字
    71 // super关键字及可以当作函数使用,也可以当作对象使用
    72 // super作为函数使用时,代表调用父类的构造函数,只能在子类构造函数中使用,其他地方会报错
    73 // 第二种情况,super作为对象时在普通方法中指向父类的原型对象,在静态方法中指向父类
    74 // super调用父类的方法时,super会绑定子类的this 
    75 
    76 
    77 // 类的prototype属性和__proto__属性
    78 // class作为构造函数的语法糖同时有prototype属性和__proto__属性,因此同时存在两条继承链
    79 // 子类的__proto__属性表示构造函数的继承,总是指向父类
    80 // 子类的prototype属性的__proto__属性表示方法继承,总是指向父类prototype属性
  • 相关阅读:
    关于Windows程序设计的初步认识
    C++虚函数作用原理(二)——类的继承
    史诗级Java资源大全中文版
    马上加薪!测试,你的职业发展...
    你不知道的接口自动化测试!
    69道Spring面试题和答案,简单明了无套路
    大厂都在问的多线程面试题,你不了解下嘛?
    现代Java进阶之路必备技能——2019 版
    80后程序员降薪6K,预感中年危机来袭,准备跳槽却碰壁
    微服务、分布式、高并发都不懂,你拿什么去跳槽?
  • 原文地址:https://www.cnblogs.com/jeff-zhu/p/11921708.html
Copyright © 2011-2022 走看看