javascript-es6学习笔记
es6技术培训文档
第一阶段:
1.let与const用法
2.变量的解构赋值
3.字符串的扩展
4.正则的扩展
5.数组的扩展
6.函数的扩展
7.对象的扩展
8.Symbol
9.Set和Map数据结构
第二阶段:
1.Reflect
2.Promise对象
3.Iteractor和for..of遍历
4.Generator函数的异步应用
5.async函数
6.Class的基本的语法
7.Decorator
8.Module的加载实现
--------------------------------------------------
第一课:
环境配置:
--------------------------
第一步:
cnpm install -g babel-cli
第二步:
cnpm install --save-dev babel-preset-es2015 babel-cli
第三步:
在pack.json同级目录中建立.babelrc文件,并在文件中写入
{
"presets": ["es2015"], //转换成es5的定法
"plugins": [] //定义一个组件数组
}
第四步:执行
babel ./src/index.js -o dist/index.js
第五步:查看结果:
"use strict";
var name = "zhilei";
console.log(name);
第六步:如果不想用上面的命令的话,想自定义的一个命令,则可以在pack.json中配置
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build":"babel ./src/index.js -o dist/index.js"
},
这样的话,我们就可以执行cnpm run build
----------------------------------------------------------------------
第二课:
变量的声明方式:
let
//局部声明
const
//声明常量
var
//全局的声明
第三课:解构赋值
----------------------------------------------------------------------
//给一个默认的值 这个相当于php中的索引数组 即下标为数字的
let [a,b=100]=[1000,undefined];
//也可以给一个初始值
let {username,age="1000"} ={username:"志雷教育",age:undefined}
//数组之间一定要一一对象
let [aa,[c,d]]=[1,[3,3]];
console.log(aa);
console.log(c);
console.log(d);
第四课:扩展运算符与rest运算符
----------------------------------------------------------------------
1.扩展运算符:(相当于python中的*args,**kwargs)
let a1=["one",'two'];
let a2=[...a1]; //将a1数组内的数组一一的遍历给a2
a2.push("three");
console.log(a1);
console.log(a2);
2.rest(剩余运算符)
function one(a,...two) {
console.log(a);
console.log(two.length);
}
//王传给a
one("王",1,2,3);
3.for in 与for of
1)for in用法
let arr=["殷超","志雷","宗斌"];
for (let i in arr){
//只能取数组的key
console.log(arr[i]);
}
2)for of 用法相当于php中 foreach()
第五课:新增字符串的功能
----------------------------------------------------------------------
1)字符中模板``
let a=10;
let b=100;
let content=`我的名字是:"${a+b}"我是一个帅哥!!!"`;
alert(content);
2)字符串查找
includes()
startsWith()
endsWith()
repeat()
1、includes()
let a ="志雷教育".includes("志雷");
alert(a);
2.startsWith();
let a ="志雷教育".startsWith("志雷");
alert(a);
3.endsWith()
let a ="志雷教育".endsWith("志雷");
alert(a);
4.repeat()
let a ="S".repeat(10);
document.write(a);
------------------------------------------------------------
Symbol()用法
let key="username";
let key1=Symbol("age");
let json={
[key]:"zhilei",
[key1]:10
};
console.log(json);
console.log(json[key1]);
------------------------------------------------------------
set增删改查
//将集合中的元素转为数组
var s=new Set(["one","two","three","one"]);
// var arr=[...s];
// console.log(arr);
var arr=[1,2,3,];
var new_arr=arr.map((x)=>{
return x*10;
});
console.log(new_arr);
console.log("-".repeat(100));
//将其转换为数组,只用数组用map使用
var new_s=Array.from(s).map(x=>{
return x+"111";
});
console.log(new_s);
/*
1.求交集
2.求并集
*/
var a=new Set([1,2,3,4]);
var b=new Set([1,2,5,4]);
var c=new Set([...a,...b]);
console.log(c); //求并集
var inter=new Set([...a].filter(x=>b.has(x)));
console.log(inter);
//求差集
var cha=new Set([...a].filter(x=>!b.has(x)));
console.log(cha);
weekSet()用法
--------------------------------------------------------
let weekSet = new WeakSet();
//不能直接将对象,只能声明好对实例,然后再加对象
let json={username:"zhilei",age:10};
//虽然值是相同的,但是却是生存在两个不同的内存空间
let json1={username:"zhilei",age:10};
weekSet.add(json1);
weekSet.add(json);
console.log(weekSet);
map对象
--------------------------------------------------------
//第一步:声明一个map实例
let map = new Map();
//第二步:给这个实例赋key,value值
map.set("username","zhilei");
map.set("age",10);
map.set("content",{bookname:"php",price:10,count:10});
//第三步:取值:get()方法
console.log(map.get("username"));
//第四步:删除 delete clear
map.delete('age');
//清空
// map.clear();
//查看长度
console.log(map.size);
//判断是否一个key
console.log(map.has('content'));
/*
总结:
增加 set
取: get
查: has
删除 :delete clear
长度: size
*/
proxy()用法
--------------------------------------------------
let pro = new Proxy({
name:"zhilei"
},{
get:function (target,key,property) {
console.log("come in get");
return target[key]; //要将结果返回出去
},
set(target,key,value,receiver){
console.log(`${key}= ${value}`);
return target[key]=value; //必须返回,否则的话,就没有结果
//vulue是新的值
}
});
console.log(pro.name);
pro.name="志雷";
proxy apply用法
----------------------------------------------
let target=function () {
return 'hello ';
};
let handler={
apply(target,ctx,args){
console.log("aaaaaaaaaa");
return Reflect.apply(...arguments);
}
};
let pro= new Proxy(target,handler);
console.log(pro());
promise对象:
----------------------------------------------------------
let state=1;
function step1(resolve,reject) {
console.log("开始做饭");
if (state==1){
resolve("做饭完成!!!")
}else{
reject("做饭失败!!!");
}
}
function step2(resolve,reject) {
console.log("坐下来吃饭");
if (state==1){
resolve("吃饭完成!!!")
}else{
reject("无法吃饭!!!");
}
}
function step3(resolve,reject) {
console.log("开始收拾桌子");
if (state==1){
resolve("收拾完成!!!")
}else{
reject("收拾失败!!!");
}
}
new Promise(step1).then(function (val) {
console.log(val);
return new Promise(step2);
}).then(function (val) {
console.log(val);
return new Promise(step3)
}).then(function (val) {
console.log(val);
});
数组遍历的几种方法:
-----------------------------------------------------
<!--数组的遍历-->
arr=["one","two","three","four"];
//第一种的遍历的方法
for(i in arr){
console.log(arr[i]);
}
console.log("-".repeat(100));
// 第二种遍历的方法
for(let i=0;i<arr.length;i++){
console.log(arr[i]);
}
console.log("-".repeat(100));
//第三咱遍历的方法
for([value,key] of arr.entries()){
console.log(value,key);
}
console.log("-".repeat(100));
//第四种逐个遍历的方法
var all=arr.entries();
console.log(all.next().value);
console.log("-".repeat(100));
var all=arr.entries();
console.log(all.next().value);
console.log("-".repeat(100));
var all=arr.entries();
console.log(all.next().value);
console.log("-".repeat(100));
json转为数组
-------------------------------------------------
//如果想将json转为数组的话,则json的key只能是一个数字
let json={
0:"zhilek",
1:10,
2:"male",
length:3
};
// let arr= Array.from(json);
// console.log(arr);
//将数组转为字符串
let arr=["one","two","three"];
//第一种方法 直接转字符串
console.log(arr.toString());
//第二种方法 ,自定义连接号
console.log(arr.join("-"));
对象扩展:
<script>
//如果提前定义好的话 ,则可以直接的调用
var age=100;
var one={
username:"zhilei",
one(){
alert(1111111)
},
age,
two() {
console.log("2222222222222")
}
};
console.log(one.username);
one.one();
console.log(one.age);
one.two();
function getPoint() {
var x = 1;
var y = 10;
return {x, y};
}
console.log(getPoint().x)
console.log(getPoint().y)
</script>
对象赋值:
---------------------------------------------------
<script>
<!--es6对象-->
let username="zhilei";
let age=10;
//es5的用法
// let a={username:usernmae,age:age};
//es6的用法
let b={username,age};
console.log(b);
</script>
key值构建
-----------------------------------------------------
<meta charset="utf-8">
<script>
//key值构建
let key="username";
//如果用key值来构建的话,则要加[]号来使用
let one={
[key]:"志雷"
};
console.log(one);
</script>
自定义构建对象:
-------------------------------------------------------
<meta charset="utf-8">
<script>
//自定义构建对象
let one={
aa(a,b) {
return a+b;
}
};
console.log(one.aa(100,200));
</script>
Object.is()用法
----------------------------------------------------
<script>
// is方法
//同值相等
console.log(-0===+0); true
console.log(NaN===NaN); //false
//严格相等
console.log(Object.is(-0,+0)); //false
console.log(Object.is(NaN,NaN)); //true
</script>
Object.assign()对象的合并
-----------------------------------------------------
<script>
//对象合并
let one={username:"zhilei"};
let two={age:10};
let three={sex:"male"};
let four=Object.assign(one,two,three);
console.log(four);
</script>
class运用(与php一样)
export import用法(与python的一样)
javascript-es6学习笔记的更多相关文章
- JavaScript正则表达式学习笔记(二) - 打怪升级
本文接上篇,基础部分相对薄弱的同学请移步<JavaScript正则表达式学习笔记(一) - 理论基础>.上文介绍了8种JavaScript正则表达式的属性,本文还会追加介绍几种JavaSc ...
- es6学习笔记-class之一概念
前段时间复习了面向对象这一部分,其中提到在es6之前,Javasript是没有类的概念的,只从es6之后出现了类的概念和继承.于是乎,花时间学习一下class. 简介 JavaScript 语言中,生 ...
- ES6学习笔记<五> Module的操作——import、export、as
import export 这两个家伙对应的就是es6自己的 module功能. 我们之前写的Javascript一直都没有模块化的体系,无法将一个庞大的js工程拆分成一个个功能相对独立但相互依赖的小 ...
- ES6学习笔记<二>arrow functions 箭头函数、template string、destructuring
接着上一篇的说. arrow functions 箭头函数 => 更便捷的函数声明 document.getElementById("click_1").onclick = ...
- ES6学习笔记<一> let const class extends super
学习参考地址1 学习参考地址2 ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015:也 ...
- ES6学习笔记之块级作用域
ES6学习笔记:块级作用域 作用域分类 全局作用域 局部作用域 块级作用域 全局作用域示例 var i=2; for (var i = 0; i < 10; i++) { } console.l ...
- ES6学习笔记之变量的解构赋值
变量的解构赋值 ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构. 数组的解构赋值 以前,为变量赋值,只能直接指定值: 1 2 3 var a = 1; var b = 2; ...
- JS&ES6学习笔记(持续更新)
ES6学习笔记(2019.7.29) 目录 ES6学习笔记(2019.7.29) let和const let let 基本用法 let 不存在变量提升 暂时性死区 不允许重复声明 块级作用域 级作用域 ...
- ES6学习笔记<四> default、rest、Multi-line Strings
default 参数默认值 在实际开发 有时需要给一些参数默认值. 在ES6之前一般都这么处理参数默认值 function add(val_1,val_2){ val_1 = val_1 || 10; ...
- ES6学习笔记<三> 生成器函数与yield
为什么要把这个内容拿出来单独做一篇学习笔记? 生成器函数比较重要,相对不是很容易理解,单独做一篇笔记详细聊一聊生成器函数. 标题为什么是生成器函数与yield? 生成器函数类似其他服务器端语音中的接口 ...
随机推荐
- 模拟,找次品硬币,Counterfeit Dollar(POJ 1013)
题目链接:http://poj.org/problem?id=1013 解题报告: 1.由于次品的重量不清楚,用time['L'+1]来记录各个字母被怀疑的次数.为负数则轻,为正数则重. 2.用zer ...
- (第六场)Heritage of skywalkert 【玄学】
题目链接:https://www.nowcoder.com/acm/contest/144/J 标题:J.Heritage of skywalkert | 时间限制:1 秒 | 内存限制:256M s ...
- python-文件基本操作(二)
在上一篇文章中,简单介绍了打开文件的方法以及关于读.写.追加的操作,点击此处查看. 在此篇文章中,继续介绍另外一种打开文件的方法和几种同时读写的模式. 一.打开文件方法:with 使用file()或o ...
- intellij idea下载安装以及创建项目(输出Hello World)
主题一:下载 第一:可以百度下载 第二:直接进行官网链接下载地址:http://www.jetbrains.com/idea/ 第一步: 第二步: 下载完成后进行安装 主题二:安装 点击Next速度可 ...
- jquery插件layer
//信息框-例1 layer.alert('见到你真的很高兴', {icon: 6}); //信息框-例2 layer.confirm('你确定你很帅么?', {icon: 3}, function( ...
- Angularjs实例3
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- linux上部署redis实现与Python上的redis交互(有坑)
1.概念 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件 2.linux安装redis 2.1yum源安装redis(不推荐) #前提得配置好阿里 ...
- center os 创建用户、设置密码、修改用户、删除用户命令
参考:https://www.linuxidc.com/Linux/2017-06/144916.htm useradd testuser 创建用户testuserpasswd testuser ...
- Oracle块修改跟踪功能
块修改跟踪功能是指使用二进制文件记录数据库中数据库更改的过程. 其目的是提高增量备份操作的性能,因为RMAN可以使用快修改跟踪文件找到上次执行备份操作后被修改的数据块.这可以节省大量时间,因为如果不这 ...
- 青蛙的约会(exgcd/扩展欧几里得)
题目描述 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事情,既没有问清 ...