• Es6(class)


    一、基础用法

     //1传统面向对象 构造函数
        function Person(name,age){
            this.name = name;
            this.age = age;
        }
        Person.prototype.sayName = function(){
            console.log(this.name); //王大厨
        }
        var person = new Person('王大厨','26');
        person.sayName();

    2.

    //2.es6 中定义的类
        class Person{
            constructor(name,age){
                this.name = name;
                this.age = age;
            }
    
            sayName(){
                console.log(this.name) //王二厨
            }
        }
        var person = new Person('王二厨',22);
        person.sayName();
       //在ES6的“类”上面继续存在。事实上,类的所有方法都定义在类的prototype属性上面。

    3.枚举

    类的内部所有定义的方法,都是不可枚举的(non-enumerable)。跟es5中的差距。

    4.constructor 方法

    constructor方法是类的默认方法,通过new命令生成对象实例时,自动调用该方法。一个类必须有constructor方法,如果没有显式定义,一个空的constructor方法会被默认添加。

    默认返回this,及实列对象。返回可以指定返回另外的对象。

    类的构造函数,不使用new是没法调用的,会报错。这是它跟普通构造函数的一个主要区别,后者不用new也可以执行。

    5.类的实列对象

    生成类的实例对象的写法,与ES5完全一样,也是使用new命令。如果忘记加上new,像函数那样调用Class,将会报错。

     var person = new Person('王二厨',22); //正确
        var p1 = Person(); //报错

    与ES5一样,实例的属性除非显式定义在其本身(即定义在this对象上),否则都是定义在原型上(即定义在class上)。

    6.不存在变量的提升

    //Class不存在变量提升(hoist),这一点与ES5完全不同。
        new Person(); //报错
        class Person{}

    7.立即执行的Class 类

    let p = new class{
            constructor(name){
                this.name = name;
            }
            sayName(){
                console.log(this.name);
            }
        }('王三厨');

    二、继承

    Class之间可以通过extends关键字实现继承,这比ES5的通过修改原型链实现继承,要清晰和方便很多。(跟php中一样啊

  • 相关阅读:
    bloom filter
    【转】单实例
    Log Structured Merge Trees(LSM) 原理
    【转】南网成立始末
    变电站综合自动化系统
    bsp tree
    Private Bytes,Working Set,Virtual Size的区别
    kdtree
    asp.net下载文件几种方式
    C# FTP操作
  • 原文地址:https://www.cnblogs.com/createGod/p/6906644.html
Copyright © 2020-2023  润新知