ES6的一些知识学习
一、基础
ES6
- 类:
class A{
constructor(name,color){
this.name = name;
this.color = color;
} toString(){
console.log('name:'+this.name+'color:'+this.color);
}
} let dog = new A('dog','white');
dog.toString();
#一些变量判断方法
console.log(doga.hasOwnProperty('name'))
console.log(doga.__proto__.hasOwnProperty('toString')) - 继承 - 导入、导出
导出变量
export var name = 'xxxxxx' //test.js
var name = 'ssds';
var age = '';
export{name,age}; 导出函数
//myModule.js
export function myModule(args) { return args;
}
导入
import {myModule} from 'myModule'; //main.js
import {name,age} from 'xxx.js'; //test.js
//一条import语句可以同时导入默认函数和其他变量
import defaultMethod, {otherMethod} from 'xx.js'; -箭头(Arrow)函数 ()=>
v=>v+
(a,b)=>a+b
()=>{
alert("foo");
}
e=>{
if(e==){
return ;
}
return /e;
} - 函数参数默认值
function foo(height=,color='red'){
// .....
} - 模板字符串
不使用之前
var name = 'your name is' + first + ' ' +last + '.'
使用模板字符串
var name = `Your name is ${first} ${last}`
#${}完成字符串的拼接,变量放于大括号之中 -解构赋值
- 获取数组中的值
#从数组中获取值并赋值到变量中,变量的顺序域数组中的对象顺序对应
var foo = ['one','two','three','four'];
var [one,two,three] = foo;
console.log(two); //'two' //如果你想忽略某些值,可以如下
var [first, , ,last] = foo;
console.log(last); // 'four' //也可以先申明变量
var a,b;
[a,b] = [,];
console.log(a); // 1 //如果没有从数组中获取到值,也可以为变量设置一个默认值
var a,b
[a=,b=] = [];
console.log(a); //
console.log(b); //7 //通过解构赋值可以方便的交换两个变量的值
var a=;
var b=; [a,b] = [b,a];
console.log(a); //
console.log(b); //
- 获取对象中的值
const student ={
name : 'Ming',
age :'',
city : 'shanghai',
}; const{name,age,city} = student;
console.log(name); //'Ming'
console.log(age); //'18'
console.log(city); //'shanghai' - 延展操作符(Spread operator) - 函数调用
myFunction(...iterableObj);
- 数组构造或字符串
[...iterableObj,'',...'hello',];
- 构造对象时,进行克隆或者属性拷贝
let objClone ={...obj}; Example
在函数调用时使用
function sum(x,y,z){
return x+y+z;
}
const numbers = [,,];
//不使用延展操作
console.log(sum.apply(null,numbers));
//使用
console.log(sum(...numbers)); //
构造数组
const students = ['a','b'];
const persons = ['c',...students,'d','e'];
console.log(persons) //['a','b','c','d','e']
数组拷贝
var arr = [,,]
var arr2 = [...arr] //等同于arr.slice()
arr2.push();
console.log(arr2) //[1,2,3,4] - 展开语法和object.assign()行为一致,执行的都是浅拷贝(只遍历一层)
- 连接多个数组
var arr1 = [,,];
var arr2 = [,,];
var arr3 = [...arr1,...arr2]; //等同于 var arr4 = arr1.concat(arr2); #es2018中增加了对象的支持
var obj1 = {foo:'ac',x:};
var obj2 = {foo:'ad',y:}; var cloneobj = {...obj1}; // {foo:'ac',x:42}
var mergeobj = {...obj1,...obj2}; // {{foo:'ad',x:42,y:43}} 在React nativex中:
- 使用
<CustomComponent name='Jane' age={} />
等同于使用了...之后的,如下
const params ={
name:'Jine',
age:
}
<CustomComponent {...params} /> - 配合解构赋值避免传入一些不需要的参数
var params ={
name:'',
title:'',
type:'aaa'
}
#不想传type,其他需要的放other里
var {type,...other} =params;
<CustomComponent type='normal' number={}{...other} />
等同于
<CustomComponent type='normal' number={} name='' title='' /> - 对象属性简写
- 在es6中允许设置一个对象的属性的时候不指定属性名
- 不使用es6
const name='xx',age='',city='shang';
const student={
name:name,
age:age,
city:city
};
console.log(student); //{name:'xx',age:'12',city:'shang'}
- 使用es6
const name='xx',age='',city='shang';
const student ={
name,
age,
city
}
console.log(student); //{name:'xx',age:'12',city:'shang'} - Promise 异步编程的一种方案,必传统的callback更优雅,统一了用法,原生提供了Promise对象
- 不使用es6
嵌套两个setTimeout函数
setTimeout(function(){
console.log('hello'); //1s后输出‘hello’
setTimeout(function(){
console.log('hi'); //2s后输出‘hi’
},)
},);
- 使用es6
var waitSecond = new Pormise(function(resolve,reject)
{
setTimeout(resolve,);
}); waitSecond
.then(function(){
console.log("hello"); //1s后输出“hello”
return waitSecond;
})
.then(function(){
console.log("hi"); //2s后输出“hi”
return waitSecond;
});
上面的代码使用两个then来进行异步编程串行化,避免了回调地狱
------from muke
ES6的一些知识学习的更多相关文章
- Vue学习笔记-Vue.js-2.X 学习(一)===>基本知识学习
一 使用环境: windows 7 64位操作系统 二 IDE:VSCode/PyCharm 三 Vue.js官网: https://cn.vuejs.org/ 四 下载安装引用 方式1:直接 ...
- 网络知识学习2---(IP地址、子网掩码)(学习还不深入,待完善)
紧接着:网络知识学习1 1.IP地址 IP包头的结构如图 A.B.C网络类别的IP地址范围(图表) A.B.C不同的分配网络数和主机的方式(A是前8个IP地址代表网络,后24个代表主机:B是16 ...
- HTML5标签汇总及知识学习线路总结
HTML5标签汇总,以及知识学习线路总结.
- 安全测试3_Web后端知识学习
其实中间还应该学习下web服务和数据库的基础,对于web服务大家可以回家玩下tomcat或者wamp等东西,数据库的话大家掌握基本的增删该查就好了,另外最好掌握下数据库的内置函数,如:concat() ...
- GCC基础知识学习
GCC基础知识学习 一.GCC编译选项解析 常用编译选项 命令格式:gcc [选项] [文件名] -E:仅执行编译预处理: -S:将C代码转换为汇编代码: -c:仅执行编译操作,不进行连接操作: -o ...
- 毕业设计预习:VHDL入门知识学习(一) VHDL程序基本结构
VHDL入门知识学习(一) VHDL程序基本结构 简介 VHDL程序基本结构 简介 概念: HDL-Hardware Description Language-硬件描述语言-描述硬件电路的功能.信号连 ...
- 「日常训练&知识学习」单调栈
这几天的知识学习比较多,因为时间不够了.加油吧,为了梦想. 这里写几条简单的单调栈作为题解记录,因为单调栈的用法很简单,可是想到并转化成用这个需要一些题目的积淀. 相关博客参见:https://blo ...
- (转)Linux基础知识学习
Linux基础知识学习 原文:http://blog.csdn.net/ye_wei_yang/article/details/52777499 一.Linux的磁盘分区及目录 Linux的配置是通过 ...
- JavaScript ES6 数组新方法 学习随笔
JavaScript ES6 数组新方法 学习随笔 新建数组 var arr = [1, 2, 2, 3, 4] includes 方法 includes 查找数组有无该参数 有返回true var ...
随机推荐
- api接口开发跨域注意事项和设置
因为跨域请求会先发送一个OPTIONS请求,所以需要判断下OPTIONS请求的就直接返回 if(strtoupper($_SERVER['REQUEST_METHOD'])== 'OPTIONS'){ ...
- 201671010142 2017-2 《java第九章学习感悟》
一,数组(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用. 集合(只能存储对象,对象类型可以不一样)的长度可变,可在多数情况下使用. 二.几种重要 ...
- 14. Longest Common Prefix ★
题目内容:Write a function to find the longest common prefix string amongst an array of strings 题目分析:本题目利 ...
- 芯片烧录器编程AT24C02
网上买了两款芯片烧录器,因为项目用的到.芯片以后的类型可能是IIC 接口的.就选则了一个IIC接口的AT24C02EEPROM.进行尝试.手头上没有这款芯片. 就想起自己单片机上有这款芯片.然后就开始 ...
- 安装oracle11g INS-30131执行安装程序验证所需的初始设置失败的解决方法
安装oracle11g [INS-30131] 执行安装程序验证所需的初始设置失败. 解决方法 第一步:控制面板>所有控制面板项>管理工具>服务>SERVER 启动 TCP/I ...
- php的array数组 -------方法foreach循环时候,利用数组里值的引用地址(& )从而改变数组里的值
/* * 把每个数组值后面都加个SQL然后返回数组 * foreach循环时候,直接用引用(&)的方式就能改变之前的数组 */public function array_foreach(){ ...
- 最常用的JavaScript类的定义
混合的构造函数/原型方式 联合使用构造函数和原型方式,就可像用其他程序设计语言一样创建对象.这种概念非常简单,即用构造函数定义对象的所有非函数属性,用原型方式定义对象的函数属性(方法).结果是,所有函 ...
- WCF分布式3-InstanceContext和ConcurrencyMode
WCF中,如果将实现契约(接口)的服务配置默认为 InstanceContextMode = InstanceContextMode.Single, 也就是说这个服务对象,客户端调用这个对象的接口时, ...
- 运维yum语法
软件管理 目前流行的软件包格式: 可直接执行的RPM与DEB.源代码形式的gzip与bzip2压缩包 RPM软件包管理 rpm rpm [选项] *.rpm -i --install instal ...
- vgcreate语法
vgcreate 用于创建LVM卷组 补充说明 vgcreate命令 用于创建LVM卷组.卷组(Volume Group)将多个物理卷组织成一个整体,屏蔽了底层物理卷细节.在卷组上创建逻辑卷时不用考虑 ...