ES6-Class类

ES6引入了Class语法,作为对象的模板,提供更清晰的面向对象编程方式。Class实际上是一个语法糖,其功能大部分在ES5中可以通过原型链实现。文章详细介绍了Class的声明、构造函数、继承、静态成员、方法的定义与重写,以及数值和对象的相关扩展,如二进制和八进制表示、数值检测与转换、对象合并和原型设置。
摘要由CSDN通过智能技术生成
ES6 提供了更接近传统语言的写法,引入了 Class (类)这个概念,作为对
象的模板。通过 class 关键字,可以定义类。基本上, ES6 class 可以看作只是
一个语法糖,它的绝大部分功能, ES5 都可以做到,新的 class 写法只是让对象
原型的写法更加清晰、更像面向对象编程的语法而已。
知识点:
1) class 声明类
2) constructor 定义构造函数初始化
3) extends 继承父类
4) super 调用父级构造方法
5) static 定义静态方法和属性
6) 父类方法可以重写

一、ES5里类的写法

function Phone(brand,price){
            this.brand = brand;
            this.price = price;
        }

        //添加方法
        Phone.prototype.call = function(){
            console.log("我可以打电话");
        }

        //实例化对象
        let HuaWei = new Phone('华为',5999);
        HuaWei.call();
        console.log(HuaWei);

 

二、ES6里类的写法

     class Shouji{
            //构造方法,名字不能修改
            constructor(brand,price){
                this.brand = brand;
                this.brand = price;
            }
            //方法必须使用该语法,不能使用ES5的对象完整形式

            call(){
                console.log('我可以打电话11');
            }

        }
        let OnePlus = new Shouji('1+',1999);
        OnePlus.call();

        console.log(OnePlus);

三、静态成员

nokia.name为undefined   Phone.name为手机

说明静态成员属于类不属于实例化对象。

 

四、Class类的继承

 <script>
        class Phone{

            //构造方法
            constructor(brand,price){
                this.brand = brand;
                this.price = price;
            }

            //父类的成员属性
            call(){
                console.log("我可以打电话");
            }
        }

        class SmartPhone extends Phone{

            //构造方法
            constructor(brand,price,color,size){
                super(brand,price);
                this.color=color;
                this.size=size;
            }

            photo(){
                console.log("我可以拍照");
            }
        }

    const xiaomi = new SmartPhone('小米',2999,"黑色",5.7);
    console.log(xiaomi.call()); 
    console.log(xiaomi.photo());
   console.log(xiaomi.price);

    
    </script>

子类对父类方法的重写,直接在写一个同名方法就可以。

五、Class类的set,get方法

 

 get方法可以用在动态变化的属性,例如求平均值。

set方法可以用在类似输入数值检测的场景。

六、数值拓展

  二进制和八进制
ES6 提供了二进制和八进制数值的新的写法,分别用前缀 0b 0o 表示。
Number.isFinite() Number.isNaN()
Number.isFinite() 用来检查一个数值是否为有限的
Number.isNaN() 用来检查一个值是否为 NaN
 
Number.parseInt() Number.parseFloat()
ES6 将全局方法 parseInt parseFloat ,移植到 Number 对象上面,使用不变。
Math.trunc
用于去除一个数的小数部分,返回整数部分。 18
Number.isInteger
Number.isInteger() 用来判断一个数值是否为整数

 Number.EPSILON 是JavaScript表示的最小精度

 EPSILON 属性的值接近于 2.220446049250313e-16。

 用来比较两个浮点数的大小
 

        function equal(a,b){

            if(Math.abs(a-b)<Number.EPSILON){

                return true;

            }else{

                return false;

            }

        }


        console.log(equal(0.1+0.2,0.3));

 

七、对象的拓展

ES6 新增了一些 Object 对象的方法
1) Object.is 比较两个值是否严格相等,与『 === 』行为基本一致( +0 NaN
2) Object.assign 对象的合并,将源对象的所有可枚举属性,复制到目标对象

 

3) __proto__ setPrototypeOf setPrototypeOf 可以直接设置对象的原型

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值