ES6语法(四)class类 数值扩展方法对象扩展方法介绍

1. Class类

  es6引入了类Class 的概念,作为对象的模板。可以使用Class关键字定义类,通过类实例化对象。
  Class类可以看做是一个语法糖,绝大部分功能也可以通过es5做到。
  Class写法只是让对象原型的写法更加清晰、更像面向对象变成的语法而已。
  ES5 构造函数实例化对象

// An highlighted blockfunction Phone(brand, price) {this.brand = brand;this.price = price;}Phone.prototype.call = function () {console.log('call me');};let HW = new Phone('huawei', 9999);console.log(HW);

1.1. class声明类

  构造方法 名称不能修改 实例化是自动执行
  方法定义不能使用ES5对象的形式

 class Phone {// 构造方法 名称不能修改 实例化是自动执行constructor(brand, price) {this.brand = brand;this.price = price;}// 不能使用ES5对象的形式// call: function (){} //  错误call() {console.log('call me');}}let OPPO = new Phone('oppo', 6666);console.log(OPPO);

1.2. static定义静态属性、方法

  es5 函数对象与实例对象属性/方法不通,通过prototype链接

      function Phone() {}Phone.name = 'hw';Phone.call = function () {console.log('call me');};Phone.prototype.size = 10;var hw = new Phone();console.log(hw.name);console.log(hw.size);console.log(hw.call());

  静态属性、方法

      class Phone {static name = 'hw';static call() {console.log('call me');}}const hw = new Phone();console.log(hw.name);console.log(Phone.name);

1.3. extends继承父类

  es5实现继承

function Phone(brand, price) {this.brand = brand;this.price = price;}Phone.prototype.call = function () {console.log('call');};function SmartPhone(brand, price, size, color) {Phone.call(this, brand, price);this.size = size;this.color = color;}SmartPhone.prototype = new Phone();SmartPhone.prototype.constructor = SmartPhone;SmartPhone.prototype.photo = function () {console.log('photo');};SmartPhone.prototype.play = function () {console.log('play');};const oppo = new SmartPhone('oppo', 5999, 5.5, 'white');console.log(oppo);

1.4. es6继承 extends super

1.4.1. super调用父级构造方法

      class Phone {constructor(brand, price) {this.brand = brand;this.price = price;}call() {console.log('call');}}class SmartPhone extends Phone {constructor(brand, price, size, color) {super(brand, price);this.size = size;this.color = color;}photo() {console.log('photo');}play() {console.log('play');}}const oppo = new SmartPhone('oppo', 9999, 6.5, 'green');console.log(oppo);

1.4.2. 父级方法可以重写、子级方法完全重写

  class Phone {call() {console.log('call');}}class SmartPhone extends Phone {call() {console.log('call super');}}const oppo = new SmartPhone('oppo', 9999, 6.5, 'green');oppo.call(); // call super

1.4.3. 普通成员不能通过super调用父级的同名方法

      class Phone {call() {console.log('call');}}class SmartPhone extends Phone {call() {super();console.log('call super');}}const oppo = new SmartPhone('oppo', 9999, 6.5, 'green');oppo.call();

2. get 、set

  get可以应用于获取平均数等需要函数处理的数据
  set可以在设置是对数据进行判断等操作

  class Phone {get price() {console.log('get');return 9999;}set price(val) {console.log('set');}}const hw = new Phone();console.log(hw.price);hw.price = 8888;

3. 数值扩展

  Number.EPSILON js最小精度
  Number.EPSILON 是js中的最小精度,如果两数相差小于Number.EPSILON,则认为两数相等。
  属性值接近于: 2.220446049250313e-16

     console.log(Number.EPSILON); // 2.220446049250313e-16const equal = (a, b) => {if (Math.abs(a - b) < Number.EPSILON) {return true;} else {return false;}};console.log(0.1 + 0.2 === 0.3); // falseconsole.log(equal(0.1 + 0.2, 0.3)); // true

3.1. 二进制、八进制

      let b = 0b1010;let o = 0o777;let d = 100;let x = 0xff;console.log(b, o, d, x); // 10 511 100 255

3.2. Number.isFinite 检测数是否为有限数

      console.log(Number.isFinite(100)); // trueconsole.log(Number.isFinite(100 / 3)); // falseconsole.log(Number.isFinite(Infinity)); // 无穷 false

3.3. Number.isNaN 检测是否为 NaN

  es5中isNaN为单独的一个方法
  es6中封装到Number中的一个方法

      console.log(Number.isNaN(123)); // falseconsole.log(Number.isNaN('gg')); // falseconsole.log(Number.isNaN(NaN)); // true

3.4. Number.parseInt 、Number.parseFloat

  之前 Number.parseInt 、Number.parseFloat也是单独的方法
会自动截断字符串

    console.log(Number.parseInt('3141592653gg了7777')); // 3141592653console.log(Number.parseFloat('3.141592653gg了7777')); // 3.141592653

3.5. Number.isInteger 检测数是否为整数

      console.log(Number.isInteger(8)); // trueconsole.log(Number.isInteger(8.9999)); // false

3.6. Math.trunc 抹除小数部分

      console.log(Math.trunc(3.141592653)); // 3

3.7. Math.sign 检测数为正数、零、负数

返回结果为1则为正数,0为零,-1为负数

      console.log(Math.sign(100)); // 1console.log(Math.sign(0)); // 0console.log(Math.sign(-100)); // -1

3.8. 对象扩展

3.8.1. Object.is() 判断两个值是否完全相等

作用类似 === 全等符号,又有些不同

      console.log(Object.is(120, 120)); // trueconsole.log(Object.is(120, 121)); // falseconsole.log(Object.is(NaN, NaN)); // trueconsole.log(NaN === NaN); // false

3.8.2. Object.assign() 对象合并

存在相同的属性,后面的覆盖前面的,不存在的不会覆盖,执行合并。适用于配置的合并

      const config1 = {host: '115.29.193.2',prot: '80',name: 'root',test1: 'test1'};const config2 = {prot: '555',pwd: 'root',test2: 'test2'};console.log(Object.assign(config1, config2));

3.8.3. Object.setPrototypeOf()设置原型对象 Object.getPrototypeOf()

const Phone = {name: 'hw'};const actions = {actions: ['call', 'geme', 'photo']};Object.setPrototypeOf(Phone, actions);console.log(Object.getPrototypeOf(Phone));console.log(Phone);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/582587.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通过代码启动 uiautomatorviewer

目录 一、前置说明1、总体目录2、相关回顾3、本节目标二、操作步骤1、目录设置2、代码实现1)ProcessManager 类:添加 is_running 方法2)UIAutomatorViewer类:提供 start、stop方法3、测试代码4、日志输出三、后置说明1、要点小结2、下节预告

C++设计模式 #8 抽象工厂(Abstract Factory)

抽象工厂这个名字比较难以帮助理解&#xff0c;可以把抽象工厂理解为“品牌工厂”或者“家族工厂”。 动机 在软件系统中&#xff0c;经常面临着“一系列相互依赖的对象”的创建工作&#xff1b;同时&#xff0c;由于需求的变化&#xff0c;往往存在更多系列对象的创建工作。如…

查看各个文件夹大小的linux命令

可以使用 du 命令来查看当前各个文件夹的大小。以下是一些常用的 du 命令选项&#xff1a; du&#xff1a;显示当前目录下所有文件和文件夹的大小。 du -h&#xff1a;以人类可读的方式显示文件夹大小&#xff0c;以 K、M、G 等单位表示。 du -s&#xff1a;显示每个目录的总大…

C# 常用数据类型及取值范围

1.常见数据类型和取值范围 序号数据类型占字节数取值范围1byte10 到 2552sbyte1-128 到 1273short 2-32,768 到 32,7674ushort20 到 65,5355int4-2,147,483,648 到 2,147,483,6476uint40 到 4,294,967,2957float41.5 x 10−45 至 3.4 x 10388double85.0 10−324 到 1.…

springboot(ssm游戏交易系统 游戏出售平台 Java系统

springboot(ssm游戏交易系统 账号出售平台 Java系统 开发语言&#xff1a;Java 框架&#xff1a;ssm/springboot vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xff1a;mysql 5.7&#xff08;或8.0&#xff09; 数据库…

位运算|比特位计数、汉明距离

位运算|比特位计数、汉明距离 338 比特位计数 /** 比特位计数法一&#xff1a;Brian Kernighan 算法的原理是&#xff1a;对于任意整数 x&#xff0c;令 xx & (x−1)&#xff0c;该运算将 x 的二进制表示的最后一个 1 变成 0。因此&#xff0c;对 x 重复该操作&#xff0…

极智开发 | 解读英伟达软件生态 深度神经网络库cuDNN

欢迎关注,获取我的更多经验分享 大家好,我是极智视界,本文来介绍一下 解读英伟达软件生态 深度神经网络库cuDNN。 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码下载,链接:https://t.zsxq.com/0aiNxERDq cuDNN,全称为 NVIDIA CUDA Deep Neural Net…

Transform环境搭建与代码调试——Attention Is All Y ou Need

1、源代码 2、环境搭建 conda create -n transform python3.8 -y conda activate transform cd /media/lhy/Transforms/annotatedtransformerpip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple # # Uncomment for colabpip install -q torchdata…

一篇文章带你轻松入门Python

Python基础 1. Hello World! Python命令行 假设你已经安装好了Python, 那么在命令提示符输入: python 将直接进入python。然后在命令行提示符>>>后面输入: >>>print(Hello World!) 可以看到&#xff0c;随后在屏幕上输出: print是一个常用函数&#xf…

进击的奶牛

题目 进击的奶牛 题意 通过二分查找算法找到一个最小间距x&#xff0c;使得在数组a中选出的k个数两两之间的间距都不小于x&#xff0c;并且x尽可能大。最后输出这个最大的x值。 思路 程序通过循环依次获取了n个整数&#xff0c;存储在数组a中。.然后&#xff0c;程序对数组a进…

阿里云PolarDB数据库费用价格表

阿里云数据库PolarDB租用价格表&#xff0c;云数据库PolarDB MySQL版2核4GB&#xff08;通用&#xff09;、2个节点、60 GB存储空间55元5天&#xff0c;云数据库 PolarDB 分布式版标准版2核16G&#xff08;通用&#xff09;57.6元3天&#xff0c;阿里云百科aliyunbaike.com分享…

HPM6750开发笔记《开发环境的搭建》

目录 一&#xff0c;下载完整的HPM—SDK 二&#xff0c;安装硬件驱动 二&#xff0c;软件激活 三&#xff0c;创建工程 1.用文档中给的方法创建工程&#xff1a; 2.用sdk_env_v1.3.0中提供的工具创建工程&#xff1a; 一&#xff0c;下载完整的HPM—SDK 下载网址&#x…

Python sanic框架钉钉和第三方打卡机实现

同样还是需要开通钉钉应用这里就不错多说了 第一步:梳理逻辑流程 前提&#xff1a;打卡的机器是使用postgres数据库&#xff0c;由于因为某些原因&#xff0c;钉钉userId 我已经提前获取到了存放到数据库里。 1.用户打卡成功后&#xff0c;我们应该监听数据库进行查询&#xf…

SuperMap iClient3D for WebGL实现浮动点效果

文章目录 前言一、update方法二、创建实体点三、效果 前言 基于SuperMap iClient3D for WebGL实现浮动点效果&#xff0c;原理就是不断改变实体的高度&#xff0c;这里我们选择使用CallbackProperty来实现。 一、update方法 var cc 0 var dd truevar update function() {i…

单文件超过4GB就无法拷贝到U盘?这个你一定要知道

前言 随着现在科技发展&#xff0c;小伙伴们所使用的数据也越变越大。还记得WindowsXP流行的时候&#xff0c;XP的镜像文件仅为几百MB大小。 但是现在随便一个系统就有可能超过4GB。 如果单个文件超过4GB就有可能没办法拷贝进U盘&#xff0c;在这里就需要给小伙伴们普及一下U…

python学习14

前言&#xff1a;相信看到这篇文章的小伙伴都或多或少有一些编程基础&#xff0c;懂得一些linux的基本命令了吧&#xff0c;本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python&#xff1a;一种编程语言&…

线上问题排查方案

在一次活动中&#xff0c;监控发现某个微服务中心服务的负载较高&#xff0c;数据库写入速度变慢&#xff0c;排查问题。 主要可从以下几个方面排查 1、生产日志级别 日志级别有 DEBUG、INFO、WARING、ERROR&#xff0c;检查生产环境的日志级别&#xff0c;日志打印多&#x…

浅谈IDC数据中心机房低压配电系统的组成与设计

随着我国移动互联网技术的不断发展&#xff0c;海量的数据资源日益庞大&#xff0c;IDC数据中心存储着这些大量的数据信息&#xff0c;其蕴含着巨大的研究和商业价值&#xff0c;因此数据中心IT设备的运行应具有较高的可靠性和稳定性。数据中心供配电系统是为机房内所有需要动力…

python关于hex读写的笔记

参考说明&#xff1a; 本文张部分参考如下连接文件 https://blog.csdn.net/marst437730201/article/details/128517936 嵌入式--Hex文件总结&#xff1a;Hex文件格式&#xff0c;Hex文件转bin文件_嵌入式芯片是hex吗-CSDN博客 1.了解hex文件 作为嵌入式软件工程师&#xff0c;h…

关于MySQL、分布式系统、SpringCloud面试题

前言 之前为了准备面试&#xff0c;收集整理了一些面试题。 本篇文章更新时间2023年12月27日。 最新的内容可以看我的原文&#xff1a;https://www.yuque.com/wfzx/ninzck/cbf0cxkrr6s1kniv MySQL 索引 说一下有哪些锁&#xff1f; 行锁有哪些&#xff1f; 性能优化 分库分表…