一、字符串的扩展
1. 用于从码点返回到对应字符。
 String.fromCodePoint(xx)
2. for...of可以遍历字符串
3. includes():返回布尔值,表示是否找到了参数字符串。
    startsWith():返回布尔值,表示参数字符串是否在原字符串的头部。
    endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部。
 (第一个参数:要搜索的目标字符,第二个参数:开始搜索的位置)
 (endsWith的行为与其他两个方法有所不同。它针对前n个字符,而其他两个方法针对从第n个位置直到字符串结束。)
4. repeat( n) n:字符串重复的次数,0--1取0,小于0报错,大于1四舍五入
5. padStart()用于头部补全,padEnd()用于尾部补全。
    padStart()和padEnd()一共接受两个参数,第一个参数是字符串补全生效的最大长度,第二个参数是用来补全的字符串。
 (如果原字符串的长度,等于或大于最大长度,则字符串补全不生效,返回原字符串。)
 (如果用来补全的字符串与原字符串,两者的长度之和超过了最大长度,则会截去超出位数的补全字符串。)
 (如果省略第二个参数,默认使用空格补全长度。)
   另一个用途是提示字符串格式。例子:
 ('12'.padStart(10, 'YYYY-MM-DD') // "YYYY-MM-12"
   '09-12'.padStart(10, 'YYYY-MM-DD') // "YYYY-09-12")

二、正则的扩展
1.    字符串对象有4个方法:match()、replace()、search()和split()。
2.   修饰符增加:i/g/S/y/u

三、数值的扩展
1.  Number.isFinite()用来检查一个数值是否为有限的(finite)
  (注意:如果参数类型不是数值,Number.isFinite一律返回false。)
    Number.isNaN()用来检查一个值是否为NaN。
  (注意:如果参数类型不是NaN,Number.isNaN一律返回false。)
2. ES6 将全局方法parseInt()和parseFloat(),移植到Number对象上面。
3. Number.isInteger() 判断是否是整数。(25 和 25.0 被视为同一个值。)
4. Math.trunc() 去除一个数的小数部分
    Math.sign() 判断一个数到底是正数、负数、还是零,对于非数值,会先将其转换为数值。
    (参数:正数--->+1;负数--->-1;0--->0;-0--->-0;其他值,返回NaN) 
    Math.cbrt方法用于计算一个数的立方根。
    Math.clz32()方法将参数转为 32 位无符号整数的形式,然后这个 32 位值里面有多少个前导 0。
    Math.fround方法返回一个数的32位单精度浮点数形式。
    Math.hypot方法返回所有参数的平方和的平方根。
5. 指数运算符(**)
   (例子:a **= 3; // 等同于 a = a * a* a;)

四、函数的扩展
1. rest 参数搭配的变量是一个数组,该变量将多余的参数放入数组中。
  注意,rest 参数之后不能再有其他参数(即只能是最后一个参数),否则会报错。
(例子:
    const headAndTail = (head, ...tail) => [head, tail];
    headAndTail(1, 2, 3, 4, 5)
   // [1,[2,3,4,5]])
2. 注意:箭头函数有几个使用注意点。
(1)函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。
(this对象的指向是可变的,但是在箭头函数中,它是固定的。)
(2)不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。
(3)不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替。
(4)不可以使用yield命令,因此箭头函数不能用作 Generator 函数。
3. setInterval和setTImeout中的this指向window,使用3种方法可以改变this指向,指向obj
  (1).var that = this;//将this存为一个变量that,此时的this指向obj
  (2).setTImeout(function(){.........this.num1}.bind(this),1000);//这里的this 指向obj
  (3).箭头函数;setTImeout(()=>{.......this.num1},1000); //箭头函数的this指向外层调用者,obj

箭头函数的this:

this指向的固定化,并不是因为箭头函数内部有绑定this的机制,实际原因是箭头函数根本没有自己的this

导致内部的this就是外层代码块的this。正是因为它没有this,所以也就不能用作构造函数。

ES6笔记(二)的更多相关文章

  1. ES6学习笔记<二>arrow functions 箭头函数、template string、destructuring

    接着上一篇的说. arrow functions 箭头函数 => 更便捷的函数声明 document.getElementById("click_1").onclick = ...

  2. ES6笔记(1) -- 环境配置支持

    系列文章 -- ES6笔记系列 虽然ES6已经发布一年多了,但在各大浏览器之中的支持度还不是很理想,在这查看ES6新特性支持度 Chrome的最新版本浏览器大部分已经支持,在Node.js环境上支持度 ...

  3. ES6笔记(2)-- let的块级作用域

    系列文章 -- ES6笔记系列 一.函数级作用域 我们都知道,在ES6以前,JS只有函数级作用域,没有块级作用域这个概念 没有块级作用域,有利有弊,利于方便自由,弊于作用域内的变量容易被共享,例如这个 ...

  4. ES6笔记(3)-- 解构赋值

    系列文章 -- ES6笔记系列 解构赋值,即对某种结构进行解析,然后将解析出来的值赋值给相关的变量,常见的有数组.对象.字符串的解构赋值等 一.数组的解构赋值 function ids() { ret ...

  5. ES6笔记(7)-- Promise异步编程

    系列文章 -- ES6笔记系列 很久很久以前,在做Node.js聊天室,使用MongoDB数据服务的时候就遇到了多重回调嵌套导致代码混乱的问题. JS异步编程有利有弊,Promise的出现,改善了这一 ...

  6. ES6 笔记汇总

    ES6 笔记汇总 二.ES6基础-let和const命令 三.变量的解构赋值 四.字符串的拓展 五.正则表达式的拓展 ...将会持续更新,敬请期待

  7. ES6笔记(5)-- Generator生成器函数

    系列文章 -- ES6笔记系列 接触过Ajax请求的会遇到过异步调用的问题,为了保证调用顺序的正确性,一般我们会在回调函数中调用,也有用到一些新的解决方案如Promise相关的技术. 在异步编程中,还 ...

  8. ES6笔记系列

    ES6,即ECMAScript 6.0,ES6的第一个版本是在2015年发布的,所以又称作ECMAScript 2015 如今距ES6发布已经一年多的时间,这时候才去学,作为一个JSer,羞愧羞愧,还 ...

  9. 《CMake实践》笔记二:INSTALL/CMAKE_INSTALL_PREFIX

    <CMake实践>笔记一:PROJECT/MESSAGE/ADD_EXECUTABLE <CMake实践>笔记二:INSTALL/CMAKE_INSTALL_PREFIX &l ...

  10. jQuery源码笔记(二):定义了一些变量和函数 jQuery = function(){}

    笔记(二)也分为三部分: 一. 介绍: 注释说明:v2.0.3版本.Sizzle选择器.MIT软件许可注释中的#的信息索引.查询地址(英文版)匿名函数自执行:window参数及undefined参数意 ...

随机推荐

  1. c#检测是否存在数据库(SQL SERVER)

    private static bool CheckDatabaseExists( string databaseName) { { string sqlCreateDBQuery; bool resu ...

  2. Python爬虫与一汽项目【三】爬取中国五矿集团采购平台

    网站地址:http://ec.mcc.com.cn/b2b/web/two/indexinfoAction.do?actionType=showMoreCgxx&xxposition=cgxx ...

  3. windows杀进程

    netstat -aon|findstr 1099 tasklist|findstr 1008 taskkill /pid 10084 -f

  4. Spring history、design philosophy (Spring的历史及设计理念)

    一,Spring的发展史 1,Spring1.x 时代 在Spring1.x时代,都是通过xml文件配置bean,随着项目的不断扩大,需要将xml配置分放到不同的配置文件中,需要频繁的在java类和x ...

  5. jpeg库的搭建

    为了在arm版上显示jpg图片,现将libjpeg库移植 我的系统:Manjaro 编译工具:arm-linux-gcc 安装最新 JPEGjpegsrc.v9c.tar.gz 下载链接http:// ...

  6. Windows 控制面板调用命令

    使用命令打开 Windows 控制面板指定页面 control.exe /name microsoft.folderoptions 启动资源管理器的 文件夹属性 选项卡 control.exe /na ...

  7. Spark机器学习基础二

    无监督学习 0.K-means from __future__ import print_function from pyspark.ml.clustering import KMeans #from ...

  8. vue安装过后遇到的坑

    vue在所有配置文件安装过之后: 运行 npm run dev 不能自动打开浏览器,但是命令行中已经提示我们运行成功了 等很久也没有自动打开浏览器,必须要自己手动的输入地址. 那么我们如何在npm r ...

  9. C、C++中的static和extern关键字

    1.首先,关于声明和定义的区别 这种写法(函数原型后加;号表示结束的写法)只能叫函数声明而不能叫函数定义,只有带函数体的声明才叫定义,比如下面 只有分配存储空间的变量声明才叫变量定义,其实函数也是一样 ...

  10. Java核心知识盘点(一)- 数据存储

    MySQL 索引使用的注意事项 1.索引的目的:在于提高查询效率,插入和更新的操作,数据库的操作是慢的,但是查询操作会非常快,索引可以对表中一个或多个字段进行加索引动作. 2.索引的类型: 1.唯一索 ...