es6:类

es5类与es6类对比

// es5类
        function Dog(name,age){
            this.name = name;
            this.age = age;
        }
        Dog.prototype.bark = function(){
            console.log('我是'+this.name);
        }
        let lili = new Dog('lili',1);
        const wancai = new Dog('wancai',3);
        console.log(lili);
        console.log(wancai);
        for(var i in lili){
            console.log(i);
        }
        // var a = new Dog.bark();
        // console.log(a);不能使用new调用类的方法
        
// es6类
        class Person {
            constructor(name,age){//必须用constructor(){}这种形式
                this.name = name;
                this.age = age;
            }//不要用逗号, 这不是对象
            talk(){
                console.log('hello,我是' + this.name);
            }
        }
        let xiaoming = new Person('xiaoming',18);
        console.log(typeof Person);//function
        for(var i in xiaoming){
            console.log(i);//不能遍历方法
        }

使用es6类的注意点

  • 1.类声明不会变量提升
  • 2.类申明代码自动运行在严格模式下
  • 3.调用类必须使用new
  • 4.类中的所有方法不可枚举
  • 5.类的方法不可通过new调用
  • 6.在类中重写类名报错

es5实现es6类的构建

        // 使用es5语法实现
        const Person1 = (function(){
            'use strict'
            const Person1 = function(name, age){
                if(!(this instanceof Person1)){
                    throw new Error('必须使用new调用')
                }
                this.name = name;
                this.age = age;
            }
            Object.defineProperty(Person1.prototype,'talk',{
                value : function(){
                    if(this instanceof Person1.prototype.talk){
                        throw new Error('不能使用new调用');
                    }
                    console.log(`我是${this.name}`);
                },
                enumerable : false
            })
            return Person1;
        })()
        var person2 = new Person1('cc',23);

类的表达式

        // 类表达式

        const Cat = class{
            constructor(name){
                this.name = name;
            }
        }
        var keke = new  Cat('keke');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值