zoukankan      html  css  js  c++  java
  • es6

    http://es6.ruanyifeng.com/#docs/class

    class Person {
    constructor{
    //构造函数,里边放不被继承的私有属性和方法
    this.property1 = '第一个私有属性';
    //属性结尾用分号
    }
    //不写在constructor里边的属性和方法都是写在了prototype原型上:
    Func1() {

    }
    Fun2() {
    //多个方法之间不用逗号隔开,加了逗号反而是错的
    }
    }
    class PersonCild extends Person {
    //extends实现继承
    }

    报错:
    missing super() call in constructor ??//在构造函数中缺少super()调用
    这个时候就是要在constructor里边单独写一行super();调用,

    其他需要记忆的知识点:
    类的数据类型就是函数,类本身就是函数
    在类的实例上面调用方法,其实就是调用原型上的方法
    类的原型上的constructor就是类本身
    尽量不要用__proto__在实例对象上给类原型添加方法,应用object.getPrototypeOf
    class表达式,给类命名,可以查找当前类:如下
    const Myclass = class Me{
    protoFun(){
    return Me.name //Me
    }
    }
    class没有变量提升
    let也没有变量提升
    类相当于实例的原型,所有在勒种定义的方法,都会被实例继承
    类(动态)方法内的this,默认执行类的实例
    静态方法中的this指的是类,动态方法中的this默认指的是实例
    如果在一个方法前,加上static关键字,就表示该方法不会被实例继承,而是直接通过类来调用,这就称之为“静态方法”,就是加上static后方法只能用类的名字来调用,实例就调不找了
    静态方法可以与非静态方法重名。
    父类的静态方法,可以被子类继承。
    子类 的静态方法可以和父类的静态方法重名,重名后在子类的静态方法里边可以用super.方法名()调用父类的同名静态方法

    私有方法:只能类内部使用,
    利用Symbol的唯一性
    const bar = Symbol('bar');
    export default class myClass{
    [bar](bar){
    return '私有方法'
    }
    }

    实例属性: 定义在实例对象(this)上的属性
    静态属性: 定义在class本身的属性
    写法:
    class 类名{
    constructor{
    this.属性B = 属性值;
    }
    };
    类名.属性A = 属性值;
    这里,属性A就是静态属性,定义在类的外部

    class
    constructor
    new target 返回new命令作用于的那个构造函数 var 实例 = new 函数A,则new target代表函数A
    类名.name
    get
    set
    static 静态方法
    super 代表父类的构造函数 返回父类实例,子类必须在constructor方法中调用super方法,因为子类实例的构建,基于对父类实例的加工
    obj.getPrototypeOf(zilei) === fulei;得到子类的父类

    类的__proto__和prototype属性
    es5中,__proto__指向构造函数的prototype属性
    es6中:
    子类的__proto__属性,表示构造函数的继承,总是指向父类
    子类prototype属性的__proto__属性,表示方法的继承,总是指向父类的prototype属性
    B.prototype.__proto__ = A.prototype;
    B.__proto__ = A;
    这两条继承链,可以这样理解:

    作为一个对象,子类(B)的原型(__proto__属性)是父类(A);

    作为一个构造函数,子类(B)的原型对象(prototype属性)是父类的原型对象(prototype属性)的实例。

    实例的__proto__属性
    子类原型的原型,是父类的原型:子类实例.__proto__.__proto__ = 父类实例.__proto__
    因此:
    通过子类实例的__proto__.__proto__属性,可以修改父类实例的行为。

    原生构造函数:
    是指js语言内置的构造函数,如下:
    Boolean()
    Number()
    String()
    Array()
    Date()
    Function()
    RegExp()
    Error()
    Object()

  • 相关阅读:
    Hibernate延迟加载、三种状态、脏检查 缓存
    Hibernate入门案例
    Hibernate入门案例及增删改查
    PasswordHelper 对user对象的password进行加密重设
    shrio 加密/编码
    shrio int配置
    shrio 授权
    JUnit中assertEquals和assertSame方法的不同
    shrio 身份认证流程-Realm
    shrio 登录/退出
  • 原文地址:https://www.cnblogs.com/padding1015/p/9184756.html
Copyright © 2011-2022 走看看