es6学习
发布日期:2021-05-12 15:54:36
浏览次数:14
分类:技术文章
本文共 4466 字,大约阅读时间需要 14 分钟。
es6学习第一集
#需要学习的东西:
js闭包 箭头函数支持es6的浏览器:ie10+ , chrome,firefox,移动端,nodejs
也可以编译转换
1:在线转换
2:提前编译es6新特性:
- 变量
- 函数
- 数组
- 字符串
- 面向对象
- promise
- generator
- 模块儿化
js之前的缺陷:
- var可以重复声明
- 没有常量
- 没有块儿级作用域
if(){ }
出现了
let
不能重复声明,会提示报错 -> 可 以 修 改 \color{red}{可以修改} 可以修改 const
不能重复声明,会提示报错 -> 不 可 以 修 改 \color{red}{不可以修改} 不可以修改 并 且 是 块 儿 级 作 用 域 \color{red}{并且是块儿级作用域} 并且是块儿级作用域 { let a = 1;}alert(a);
闭包问题
for(var i = 0 ; i < btns.length ; i++){ (function(i){ btns[i].onclick = function(){ alert(i+btns[i].innerText) } })(i) } 可以用let for(let i = 0 ; i < btns.length ; i++){ btns[i].onclick = function(){ alert(i+btns[i].innerText) } }
函数
箭头函数
如果只有一个参数,()可以省略
如果只有一个return , {}可以省略
()=>{ }window.onload = function(){ alert('abc'); }window.onload = ()=>{ alert(123);}let show = (a,b) => { alert(a+b);}show(1,2)let arr = [12,5,6,7,143,412];arr.sort(function(n1,n2){ return n1-n2;})arr.sort( (n1,n2) =>{ return n1-n2;} )//return必须省略arr.sort( (n1,n2) => n1-n2 )
函数的参数
参数扩展/展开
- 收集剩余参数
//收集剩余参数function show(a,b, ...args){ alert(a); alert(b); alert(args);}show(1,2,3,4,5,6,7,8,9)//数组展开,就相当于把东西拿出来放上var arr = [1,2,3];show(...arr); let arr1 = [1,2,3]; let arr2 = [4,5,6]; let arr0 = [...arr1,...arr2]; //不符合语法的 let a; a = ...arr1; //收集剩余参数和数组展开综合起来玩儿
默认参数
解构赋值
注意事项
左右两边结构必须一样
右边必须是一个东西(数组,json,任何存在的合法的对象即可)
声明和赋值必须在一句话里面
let [a,b,c] = [1,2,3];let [{ a,b},[n1,n2,n3],num,str] = [{ a:12,b:5},[12,4,6],6,'deffw'];let [json,arr,a1,a2] = [{ a:12,b:5},[12,4,6],6,'deffw'];
数组
- 多了四个方法
- map 映射
- reduce 汇总
- filter 过滤器
- foreach 循环
//map let score = [11,23,54,76,86]; let result = score.map(item => item>=60 ? '及格' : '不及格') alert(result)//reduceresult = score.reduce(function(temp , item , index){ return temp+item;})alert(result)//求平均数:result = score.reduce(function(temp , item , index){ if(index == score.length - 1){ return (item+temp)/score.length } return temp+item;})//filter,返回的是item本身let arr = [1,2,3,4,5,6,7,8];result = arr.filter(item=>{ return item%2 == 0 ? true : false;})alert(result);let cloth = [ { title:'男士衬衫',price:123}, { title:'男士衬衫2',price:134}, { title:'女士衬衫',price:123321}, { title:'女士衬衫',price:123111}];let result = cloth.filter(item=>item.price >= 10000);console.log(result);//forEachcloth.forEach((item,index)=>{ alert(index+':'+ item.title);})
字符串
- 多了两个方法
str.startsWith()
str.endsWith()
- 字符串模板
ES6面向对象
创建对象
老版本
function User(name,pass){ this.name = name; this.pass = pass;}User.prototype.showName = function(){ alert(this.name);}User.prototype.showPass = function(){ alert(this.pass);}var url = new User('wxf','111111');url.showName();url.showPass();
新版本
class User{ constructor(name,pass) { this.name = name; this.pass = pass; } showName(){ alert(this.name); } showPass(){ alert(this.pass); }}let u = new User('wxf','111111');u.showName();u.showPass();
继承
老版本继承
function User(name,pass){ this.name = name; this.pass = pass;}User.prototype.showName = function(){ alert(this.name);}User.prototype.showPass = function(){ alert(this.pass);}function VipUser(name,pass,level){ User.call(this,name,pass); this.level = level;}VipUser.prototype = new User();VipUser.prototype.constructor = VipUser;VipUser.prototype.showLevel = function(){ alert(this.level);}var v1 = new VipUser('wxf',111111,3);v1.showName();v1.showPass();v1.showLevel();
新版本
class User{ constructor(name,pass) { this.name = name; this.pass = pass; } showName(){ alert(this.name); } showPass(){ alert(this.pass); }}class VipUser extends User{ constructor(name,pass,level){ super(name,pass); this.level = level; } showLevel(){ alert(this.level); }}let vip1 = new VipUser('wxf',111111,1);vip1.showName();vip1.showPass();vip1.showLevel();
JSON
- JSON对象
- 简写
- 名字一样
- 方法
json对象
let json = { "a" : 1 , "b" : 5};alert(JSON.stringify(json));//json标准写法,//key为双引号let str = '{"a" : 12 , "b" : 3}';alert(JSON.parse(str))
简写
//老版本 let json = { "a" : "a" , "b" : "b"}; console.log(json) //简写,名字和值一样的时候,保留一个就行 let a = 12; let b = 34; let json2 = { a,b} console.log(json2) //新版本://里面如果有function,直接可以和写es6的类一样 let json = { a:12, showA(){ alert(this.a); } } json.showA();
promise
用同步的语法去写异步
异步:多线程,代码复杂
同步:单线程,代码简单Promise.all()
简单封装一下
jquery已经封装好了的异步
转载地址:https://blog.csdn.net/qq_40666620/article/details/100711877 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月02日 06时15分54秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
C++核心准则C.51:使用委托构造函数实现所有构造函数的共通动作
2019-04-28
C++核心准则C.52:合理使用继承的构造函数
2019-04-28
基于Chrome浏览器的前端调试
2019-04-28
第1章 Ext JS介绍与快速入门[1/4]
2019-04-28
第1章 Ext JS介绍与快速入门[2/4]
2019-04-28
Java-拾贝1
2019-04-28
Java-拾贝2
2019-04-28
C-拾贝
2019-04-28
数据库-拾贝
2019-04-28
EMS --Web Development Kit开发
2019-04-28
Java反编译工具推荐 -- DJ Java Decompiler
2019-04-28
PLM -Aras Innovator 安装
2019-04-28
读取XML文件报 - Content is not allowed in prolog
2019-04-28
Memcached安装与使用实例
2019-04-28
JSP Include 文件方式
2019-04-28
web 端JS取得window 的按键动作(按下Shift, Alt,Ctrl....)
2019-04-28
Responsive自适应网页设计与ResponsiveColumn自适应列实例
2019-04-28
[译] Dojo 工具包参考手册
2019-04-28