JS学习笔记Day15
一、ES5及ES6
(一)严格模式
(二)bind/call/apply(改变上下文this指向,都是函数对象的方法)
1、bind:返回值是一个函数
2、call:返回值是一个对象
3、apply:返回值是一个对象
(三)JSON.parse/JSON.stringify
1、JSON.parse():将json字符串转为json对象,严格模式下使用(IE7及以下不兼容)
2、JSON.stringify():将json对象转为json字符串,严格模式下使用(IE7及以下不兼容)
(四)let:取代var,声明变量
1、script:全局作用域
function:局部作用域
let:块级作用域
1)声明let声明变量,会产生块级作用域
2)let声明的变量不在做变量提升,只能先声明,后使用
3)同一个作用域,let不可以重复声明同一个变量
4)for循环有两个块级作用域,for本身是一个作用域,for循环体又是for中的一个子级作用域
5)let声明的变量不再是window的属性
2、const:用于声明常量
(五)变量的解构赋值:ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)
1、以前,为变量赋值,只能直接指定值。比如:
let a = 1
let b = 2
let c = 3
现在,ES6允许这样:
let [a, b, c] = [1, 2, 3]
或是这样:
let {a, b, c} = {a: 1, b: 2, c: 3}
上面三种方法的结果都是一样的;本质上,后两种通过解构赋值的写法属于“模式匹配”,只要判定了等号两边的模式相同(解构),左边的变量就会被赋予对应的值(赋值)
(六)字符串的扩展方法
1、includes("字符串",下标位置);查找指定的字符串是否在父串中包含,返回布尔值
2、startsWith("字符串",下标位置);查找指定的字符串是否在父串的开头部分,返回布尔值
3、endsWith("字符串",下标位置);查找指定的字符串是否在父串的结尾部分,返回布尔值
注:includes和startsWith中第二个参数是从指定位置向后查找;endsWith中第二个参数是从指定位置(不包含)向前查找
4、repeat();重复指定的字符串
注:1)如果是小数,会自动向下取整
2)字符串,可转先将字符串转为数字,不可转NaN为0;
3)小于等于-1,报错;小于0大于-1取0
5、``:模板字符串
例:` ${变量名} `
(七)箭头函数()=>{}
1、唯一的好处:箭头函数中的this指向的是箭头函数所有作用域绑定的对象(this所在作用域的父级作用域绑定的对象)
(八)Symbol():是ES6新增的第七种基本数据类型,特点是保证每一个变量中的值具有唯一性
1、唯一的好处:可以解决原生对象中key被覆盖的问题
(九)Set和Map结构
1、Set集合,本质上就是对数组的一种包装;具有自动去除重复元素的特性
1)如何创建set对象
let set = new Set();
let set = new Set([]);//里面为一维数组
2)set属性:size:返回set对象的长度
3)set的方法:
a、add();添加元素
b、delete();删除指定key的元素值
c、has();判断指定元素是否在set对象中,返回布尔值
d、clear();清空set对象
4)遍历set对象:
a、for of:for(变量 of 集合){}
b、keys():获取set对象中所有的key
c、values():获取set对象中所有的value
d、entries():获取set对象中所有的key和value
e、forEach(function(value,key,set){})
2.map:解决原生JS对象中key是字符串的问题
1)如何创建Map对象
var map = new Map();
var map = newMap([[]]);//里面为二维数组
2)Map的属性
size:返回map对象的长度
3)map的方法
a、set():添加元素
b、get():获取元素
c、delete():删除只能指定key的元素值
d、has():判定指定元素是否在map对象中,返回布尔值
e、clear():清空map对象
4)遍历map对象
a、for of:for(变量 of 集合){}
b、keys():获取map对象中所有的key
c、values():获取map对象中所有的value
d、entries():获取map对象中所有的key和value
e、forEach(function(value,key,set){})
(十)数组去重
1. var arr = [1,2,1,12,1,2,1,1,1,2,2,1,1];
var set = [...new Set(arr)];
console.log(set);
//... : 扩展运算符
var str = 'abcde';
console.log([...str]);
(十一)生成器函数
(十二)class

(十三)for in/for of
区别:for in中的循环变量表示下标或key
for of中的循环变量表示value或key
JS学习笔记Day15的更多相关文章
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- Vue.js学习笔记(2)vue-router
vue中vue-router的使用:
- JS 学习笔记--9---变量-作用域-内存相关
JS 中变量和其它语言中变量最大的区别就是,JS 是松散型语言,决定了它只是在某一个特定时间保存某一特定的值的一个名字而已.由于在定义变量的时候不需要显示规定必须保存某种类型的值,故变量的值以及保存的 ...
- WebGL three.js学习笔记 使用粒子系统模拟时空隧道(虫洞)
WebGL three.js学习笔记 使用粒子系统模拟时空隧道 本例的运行结果如图: 时空隧道demo演示 Demo地址:https://nsytsqdtn.github.io/demo/sprite ...
- WebGL three.js学习笔记 法向量网格材质MeshNormalMaterial的介绍和创建360度全景天空盒的方法
WebGL学习----Three.js学习笔记(5) 点击查看demo演示 Demo地址:https://nsytsqdtn.github.io/demo/360/360 简单网格材质 MeshNor ...
- WebGL three.js学习笔记 创建three.js代码的基本框架
WebGL学习----Three.js学习笔记(1) webgl介绍 WebGL是一种3D绘图协议,它把JavaScript和OpenGL ES 2.0结合在一起,通过增加OpenGL ES 2.0的 ...
- vue.js 学习笔记3——TypeScript
目录 vue.js 学习笔记3--TypeScript 工具 基础类型 数组 元组 枚举 字面量 接口 类类型 类类型要素 函数 函数参数 this对象和类型 重载 迭代器 Symbol.iterat ...
- 2019-4-29 js学习笔记
js学习笔记一:js数据类型 1:基本数据类型 number类型(整数,小数) String类型 boolean类型 NaN类型其实是一个nu ...
- 一点感悟:《Node.js学习笔记》star数突破1000+
写作背景 笔者前年开始撰写的<Node.js学习笔记> github star 数突破了1000,算是个里程碑吧. 从第一次提交(2016.11.03)到现在,1年半过去了.突然有些感慨, ...
随机推荐
- ASP.NET没有魔法——ASP.NET MVC IoC代码篇
上一篇文章主要以文字的形式介绍了IoC及其在ASP.NET MVC中的使用,本章将从以下几点介绍如何使用代码在ASP.NET MVC中实现依赖注入: ● AutoFac及安装 ● 容器的创建 ● 创建 ...
- 使用cmd查看电脑连接过的wifi密码(二)
上次写了一个查看wifi的bat文件(https://www.cnblogs.com/feiquan/p/9823402.html),发现有个问题就没法保存到记事本,而且还要处理不同的系统语言,这次重 ...
- 前后端分离djangorestframework—— 接入微信模板消息推送
微信 什么是微信也不多说,跟前面的支付宝一样的 微信支付 微信支付也有个沙箱环境,沙箱环境官方文档 由文档中那句很显眼的话所得,即使是测试环境也需要真实的商户号,所以这个就没法想支付宝那样用沙箱账号来 ...
- 基础学习14天 MD5加密
private static string GetMD5(string str) { //创建MD5对象 MD5 md5 = MD5.Create(); //字符串类型转换Wie字节 byte[] b ...
- telnet操作memcache
1.使用方法 1. 连接到memcached telnet 192.168.1.100 11211 add name 0 60 5 [说明 add 是指令名 name 是key的名字 (是以 ...
- python网络进阶篇
并发编程 进程 操作系统的历史 # 手工操作 —— 穿孔卡片 # 程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制台开关启动程序针对数 ...
- 阿里巴巴开源的Asynchronous I/O Design and Implementation
Motivation I/O access, for the most case, is a time-consuming process, making the TPS for single ope ...
- Zabbix 3.4.7调整监控阈值以及告警级别
1.找到需要监控的主机:右上角进行搜索 我们要更改sepm02p的阈值和级别: 进行更改级别:先点击Triggers , 选中要更改的监控项,例如我要更改CPU,点击以下红色标出的,千万不要选择Tem ...
- 文本分类实战(五)—— Bi-LSTM + Attention模型
1 大纲概述 文本分类这个系列将会有十篇左右,包括基于word2vec预训练的文本分类,与及基于最新的预训练模型(ELMo,BERT等)的文本分类.总共有以下系列: word2vec预训练词向量 te ...
- (八)Index and Query a Document
Let’s now put something into our customer index. We’ll index a simple customer document into the cus ...