ES6新特性

#解构:从数组和对象中提取值,对变量进行赋值,这被称为解构
    1 数组解构  let [a,[b,c],d]=[1,[2,3],4];    形式要统一按次序排列的
        let [a,b="JSPang"]=['技术胖']
        console.log(a+b); //控制台显示“技术胖JSPang”
    2 对象的解构赋值  let {foo,bar} = {foo:'JSPang',bar:'技术胖'}; 对象的属性没有次序,变量必须与属性同名,才能取到正确的值。
    3 字符串解构    
        const [a,b,c,d,e,f]="JSPang";
        console.log(a);
        console.log(b);
        console.log(c);
        console.log(d);
        console.log(e);
        console.log(f);
#function jspang(first,...arg){}    ...表示传入的参数不确定  第一个参数我知道,后面的不清楚。arg.length 返回的是你不知道的长度。
```
    function jspang(first,...ss){
        // for(let i=0 ,i<ss.length,i++){ console.log(ss[i]);}
        for(let val of ss){
            console.log(val);
        }
    }
    jspang(0,1,2,3,4,5,6,7);  // 1 2 3 4 5 6 7

```
#扩展运算符的用处:这样改变arr2的值,arr1的值不会改变了
```
    let arr1=['www','jspang','com'];
    //let arr2=arr1;
    let arr2=[...arr1];
    console.log(arr2);
    arr2.push('shengHongYu');
    console.log(arr2);
    console.log(arr1);

```
#字符串模版  以前 '+jspang+' 现在 ${jspang}
    let jspang='技术胖';
    //let blog = '非常高兴你能看到这篇文章,我是你的老朋友'+jspang+'。这节课我们学习字符串模版。';
    let blog = `<b>非常高兴你能看到这篇文章</b>,我是你的老朋友${jspang}。<br/>这节课我们学习字符串模版。`;                       //这里要注意用的符号  `   `  不是单引号   里面支持标签

#字符串查找
let jspang='技术胖';
let blog = '非常高兴你能看到这篇文章,我是你的老朋友技术胖。这节课我们学习字符串模版。';
document.write(blog.indexOf(jspang));            // 返回的是索引位置
document.write(blog.includes(jspang));           // 返回的是true
 + 判断开头是否存在:blog.startsWith(jspang);    // 返回的是true false
 + 判断结尾是否存在:blog.endsWith(jspang);

# 复制字符串
document.write('jspang|'.repeat(3));  //打印3遍 jspang|jspang|jspang|

#判断是否为数字Number.isFinite(a)   判断是否为整数Number.isInteger(a) 取整Number.parseInt(xxx)和浮点型转换Number.parseFloat(xxx)
let a= 11/4;
console.log(Number.isFinite(a));//true

# Array.from(xxx)方法:                   JSON数组格式转换——JSON的数组格式就是为了前端快速的把JSON转换成数组的一种格式
let  json = {
    '0': 'jspang',
    '1': '技术胖',
    '2': '大胖逼逼叨',
    length:3
}
let arr=Array.from(json);
console.log(arr)                 //   [ 'jspang', '技术胖', '大胖逼逼叨' ]

# Array.of(xxx)方法:                      它负责把一堆文本或者变量转换成数组
let arr =Array.of(3,4,5,6);
console.log(arr);              //    [3,4,5,6]
let arr =Array.of('技术胖','jspang','大胖逼逼叨');
console.log(arr);             //   [ '技术胖', 'jspang', '大胖逼逼叨' ]

#数组转换字符串     join()方法就是在数组元素中间,加了一些间隔,开发中很有用处。toString()方法,转换时只是是用逗号隔开了。
let arr=['jspang','技术胖','前端教程'];
console.log(arr.join('|'));   //  jspang|技术胖|前端教程

let arr=['jspang','技术胖','前端教程'];
console.log(arr.toString());  //   jspang,技术胖,前端教程




# find( )实例方法:                             如果找到符合条件的数组元素就回该元素,找不到返回undefined。
# findIndex()                                    函数也是查找目标元素,找到就返回元素的位置,找不到就返回-1。
+ value:表示当前查找的值。
+ index:表示当前查找的数组索引。
+ arr:表示当前数组。
let arr=[1,2,3,4,5,6,7,8,9];
console.log(arr.find(function(value,index,arr){
    return value > 5;
}))
//  6
console.log(arr.findIndex(function(value,index,arr){
    return value > 5;
}))
//  5
# fill( )实例方法:                            把数组进行填充,第二个是开始填充的位置,第三个是填充到的位置。
let arr=[0,1,2,3,4,5,6,7,8,9];
arr.fill('jspang',2,5);                          //第二位到第五位
console.log(arr);
// [ 0, 1, 'jspang', 'jspang', 'jspang', 5, 6, 7, 8, 9 ]

# for…of 循环:
let arr=['jspang','技术胖','大胖逼逼叨']
for (let item of arr){
    console.log(item);
}
 # for…of 数组索引:                       有时候开发中是需要数组的索引的,那我们可以使用下面的代码输出数组索引。
    let arr=['jspang','技术胖','大胖逼逼叨']
    for (let index of arr.keys()){
        console.log(index);
    }

# 对象的函数解构                           直接把这个JSON格式数据当作参数,传递到函数内部进行处理
let json = {
    a:'jspang',
    b:'技术胖'
}
function fun({a,b='jspang'}){
    console.log(a,b);
}
fun(json);        //     jspang 技术胖


# 数组的遍历方法

# 1.forEach                               forEach循环的特点是会自动省略为空的数组元素,相当于直接给我们筛空了。当是有时候也会给我们帮倒忙。
let arr=['jspang','技术胖','前端教程'];
arr.forEach((item,i)=>console.log(i,item));
//0 'jspang'
//1 '技术胖'
//2 '前端教程'
# 2.filter                                   他其实也有循环的功能          过滤、遍历
var arr = [1, 2, 3];
arr.filter(item => { // item为数组当前的元素
    return item > 1; // [2, 3]
})
# 3.some                                  some() 方法会依次执行数组的每个元素:如果有一个元素满足条件,则返回true , 剩余的元素不会再执行检测。
var arr = [1, 2, 3];
arr.some(item => { 
    return item ==2;    // true
})
var arr = [1, 2, 3];
arr.some((item, index, arr) => { // item为数组中的元素,index为下标,arr为目标数组
    console.log(item); // 1, 2, 3
    console.log(index); // 0, 1, 2
    console.log(arr); // [1, 2, 3]  
})
# 4.map                                 map在这里起到一个替换的作用
let arr=['jspang','技术胖','前端教程'];
console.log(arr.map(x=>'web')); //  [ 'web', 'web', 'web' ]
# 5. every()                           every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
var arr = [1, 2, 3];
arr.every((item, index, arr) => { // item为数组中的元素,index为下标,arr为目标数组
    return item > 0; // true
    return index == 0; // false
})


# ES6中对象                          声明了一个obj对象,增加了一个对象方法add和一个对象属性name,然后在控制台进行了打印。
var obj={
    add:function(val){
        return val+10;
    },
    name:'I am Jspang'
    
};
console.log(obj.add(100));
console.log(obj.name);

# 对象赋值
var obj = {}; //或者 var obj=new Object();
var key = "name";
var value = "张三丰"
obj[key] = value;
console.info(obj);  // { name: '张三丰' }
# 对象Key值构建 
//有时候我们会在后台取出key值,而不是我们前台定义好的,这时候我们如何构建我们的key值那。比如我们在后台取了一个key值,然后可以用[ ] 的形式,进行对象的构建。
let key='skill';
var obj={
    [key]:'web'
}
console.log(obj.skill);
# 自定义对象方法
let key='skill';
var obj={
    [key]:'web'
}
console.log(obj.skill);

# Object.assign(  )合并对象
var a={a:'jspang'};
var b={b:'技术胖'};
var c={c:'web'};

let d=Object.assign(a,b,c)
console.log(d);


# Set的声明  只能放数组                         Set和Array 的区别是Set不允许内部有重复的值,如果有只显示一个,相当于去重。
let setArr = new Set(['jspang','技术胖','web','jspang']);
console.log(setArr);  //Set {"jspang", "技术胖", "web"}
# Set值的     增    删    查
+ setArr.add('前端职场');
+ setArr.delete('前端职场');
+ console.log(setArr.has('jspang'));//true
+ setArr.clear();//清空

# size属性可以获得Set值的数量。
+ console.log(setArr.size);

# set的循环
let setArr = new Set(['jspang','技术胖','web','jspang']);
for (let item of setArr){
    console.log(item);
}

let setArr = new Set(['jspang','技术胖','web','jspang']);
setArr.forEach((value)=>console.log(value));


# WeakSet的声明   放对象                 这里需要注意的是,如果你直接在new 的时候就放入值,将报错。里边的值也是不允许重复的

let weakObj=new WeakSet();
let obj={a:'jspang',b:'技术胖'}
weakObj.add(obj);                              // 必须用add方法
console.log(weakObj);

# 总结:在实际开发中Set用的比较多,WeakSet用的并不多,但是他对传入值必须是对象作了很好的判断,我们灵活应用还是有一定的用处的。

# map数据结构                                   取值get   删除delete   size属性   查找是否存在has   清楚所有元素clear
let json = {
    name:'jspang',
    skill:'web'
}
var map=new Map();
map.set(json,'iam');                          // set    赋值
console.log(map);                            // Map { { name: 'jspang', skill: 'web' } => 'iam' }               key => value
console.log(map.get(json));             // iam    ( get  取值 )
map.delete(json);                            // 删
console.log(map)                            // Map {}
console.log(map.has('jspang'))       // 查

#总结:map在现在开发中已经经常使用,它的灵活性和高效性是我们喜欢的。开发中试着去使用map吧,你一定会喜欢上它的。


# 用Proxy进行预处理                          newn  Proxy({},{});

var pro = new Proxy({
    add: function (val) {
        return val + 10;
    },
    name: 'I am Jspang'
}, {
        get:function(target,key){           //get是在你得到某对象属性值时预处理的方法,三个参数 target:得到的目标值,key:目标的key值,相当于                                                      对象的属性
            console.log('come in Get');
            return target[key];
        },
        set:function(target,key,value,receiver){   //set属性是值你要改变Proxy属性值时,进行的预先处理 target:目标值。key:目标的Key值。                                                                       value:要改变的值。
            console.log(`    setting ${key} = ${value}`);
            return target[key] = value;
        }

    });

console.log(pro.name);
pro.name='技术胖';
console.log(pro.name);
  
输出:
            come in Get                                         // 先输出了come in Get。相当于在方法调用前的钩子函数。
            I am Jspang
                setting name = 技术胖                   // set属性是值你要改变Proxy属性值时,进行的预先处理。
            come in Get
            技术胖


let target = function () {
    return 'I am JSPang';
};
var handler = {
    apply(target, ctx, args) {
        console.log('do apply');
        return Reflect.apply(...arguments);
    }
}

var pro = new Proxy(target, handler);             //apply的作用是调用内部的方法,它使用在方法体是一个匿名函数时。

console.log(pro());                                          // do apply  // I am JSPang


# class类的使用
class Coder{
    name(val){                                                 // 类的里面都是函数
        console.log(val);
        return val;                                             // 要注意return 的用法
    }                                                                // 注意f这里没有逗号 ,
    skill(val){
        console.log(this.name('jspang')+':'+'Skill:'+val);        // 这里的 this 指类本身
    }

    constructor(a,b){                                      // constructor( )进行传参
        this.a=a;
        this.b=b;
    }

    add(){
        return this.a+this.b;
    }
}

let jspang=new Coder(1,2);                      // 实例化一个类
console.log(jspang.add());
# class的继承
class htmler extends Coder{
}
let pang=new htmler;
pang.name('技术胖');


# 模块化操作
+ 1.export
export var a ='jspang';
export function add(a,b){
    return a+b;
}
对应的导入方式
import {a,add} form './temp';//也可以分开写

+ 2.export defalut
export default var a='jspang';
对应的引入方式
import str from './temp';     // 导入的时候没有花括号,然后系统允许你为它取任意名字

原文地址:https://www.cnblogs.com/sweet-ice/p/10591330.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


原文连接:https://www.cnblogs.com/dupd/p/5951311.htmlES6之前已经出现了js模块加载的方案,最主要的是CommonJS和AMD规范。commonjs主要应用于服务器,实现同步加载,如nodejs。AMD规范应用于浏览器,如requirejs,为异步加载。同时还有CMD规范,为同步加载方案如seaJS。ES6在语言规格的层面上,实现了模块功能,而且...
以为Es6,javascript第一次支持了module。ES6的模块化分为导出(export)与导入(import)两个模块,其中在项目中,我们会经常看到一种用法import * as obj from,这种写法是把所有的输出包裹到obj对象里。示例一 1 2 3 4 5 6 7 // index.js export function fn1(data){ console.log(1) } export f.
视频讲解关于异步处理,ES5的回调使我们陷入地狱,ES6的Promise使我们脱离魔障,终于、ES7的async-await带我们走向光明。今天就来学习一下 async-await。async-await和Promise的关系经常会看到有了 async-await、promise 还有必要学习吗、async await优于promise的几个特点,接收了这些信息后,就蒙圈了。现在才知道...
TypeScript什么是TypeScript?TypeScript是由微软开发的一款开源的编程语言TypeScript是JavaScript的超集,遵循最新的ES5 ES6规范,TypeScript扩展了JavaScript的语法TypeScript更像后端 Java c# 这样的面向对象语言可以让js开发大型企业项目谷歌也在大力支持TypeScript的推广,React ,VUE 都集成了TypeScriptTypeScript安装安装-- 安装npm install -g type
export class AppComponent { title = 'Tour of heroes'; hero: Hero = { id: 1, name: '张三' };}export class Hero { id: number; name: string;}就是这一段,看起来有点晕,这里是实例化一个Hero类型的对象hero,还是创建一个变量?后面是赋值,但是不知道什么意思?hero: Hero = { id: 1, na.
用 async/await 来处理异步昨天看了一篇vue的教程,作者用async/ await来发送异步请求,从服务端获取数据,代码很简洁,同时async/await 已经被标准化,是时候学习一下了。先说一下async的用法,它作为一个关键字放到函数前面,用于表示函数是一个异步函数,因为async就是异步的意思, 异步函数也就意味着该函数的执行不会阻塞后面代码的执行。 写一个async 函数async function timeout() {return 'hello world'
es6的语法已经出了很长的时间了,在使用上也可以通过babel这类的编译工具转译为浏览器可以识别的es5的语法,但是依旧有很多开发在写代码的时候,依旧没有用es6的语法,而是习惯使用老的语法,这篇文章主要会介绍解构赋值基本用法以及在实际使用场景中相比es5语法的优势,让大家从根本上了解es6语法的优势基本用法数组解构让我们一起先来看数组解构的基本用法:let [a, b, c] ...
参考链接1 参考链接2写法1 - 使用 function 关键字function greeter(fn: (a: string) =&gt; void) { fn("Hello, World");}function printToConsole(s: string) { console.log(s);}greeter(printToConsole);(a: string) =&gt; void上述语法的含义:表示一个函数,接收一个字符串作为输入参数,没有返回参数。可
ES6简介-ECMAScript是javascript标准-ES6就是ECMAScript的第6个版本-ECMAScript6.0(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了。它的目标,是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。ES6新增加的功能:1.let
ES6  在ES5的基础上增加了一些新的特性和写法,特别在函数写法上,增加了箭头函数 1.正经的函数写法//普通的传递值的写法functionsum1(x,y){returnx+y;}constres=sum1(2,3);console.log(res);//传递对象的方式,调用时需要传递一个对象过去function
ES5及ES6es表示ECMASCript,他是从es3,es5,es6,es5是2009.12月发布的,es6是2015.6月发布的。vue2完全支持es5的(vue3完全支持es6的),react完全支持es6es5的新特性严格模式(对应的相反的称为怪异模式)'usestrict'//一般用于相关的设计上面书写一个严格模式底下的代码就需要按照严格模
ES5的严格模式所谓严格模式,从字面上就很好理解,即更严格的模式,在这种模式下执行,浏览器会对JS的要求更苛刻,语法格式要求更细致,更符合逻辑。怪异模式:就是我们之前一直使用的开发模式,就叫怪异模式。因为很多时候出来的结果是非常怪异的,所以才称之为怪异模式。'usestrict'//一般用
相同点export与exportdefault均可用于导出常量、函数、文件、模块可在其它文件或模块中通过import+(常量|函数|文件|模块)名的方式,将其导入,以便能够对其进行使用不同点一、在一个文件或模块中,export、import可以有多个,exportdefault仅有一个//model.jsle
24.class类 25.class中的extend 26.super关键字 27.super应用 28.class属性 30.静态成员和实例成员 31.构造函数问题 32.构造函数原型 33.原型链 34.js查找机制 35.原型对象中this指向 36.扩展内置对象方法 37.call方法 38.借用父构造函数
什么是ES6ES的全称是ECMAScript,它是由ECMA国际标准化组织,制定的一项脚本语言的标准化规范。泛指2015年发布的es2015版极其后续版本ES6中新增语法letES6中新增的用于声明变量的关键字。注意:使用let关键字声明的变量才具有块级作用域,使用var声明的变量不具备块级作用域特
命名修饰符let:不能重复声明变量、块级作用域leta=1;leta=2;//报错const:初始化常量,必须给初始值,否则报错、在同一个作用域内,const定义的常量不能修改其值、块级作用域consta=10a=100//报错,不能重复声明解构constobj={name:'jack'age:18sex:'
ES6新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。1{2leta=10;3varb=1;4}56a//ReferenceError:aisnotdefined.7b//1上面代码在代码块之中,分别用let和var声明了两个变量。然后在代码块之外调用
<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><metahttp-equiv="X-UA-Compatib
一,RegExp构造函数es5中,RegExp构造函数的参数有两种情况。1,参数是字符串,第二个参数表示正则表达式的修饰符(flag)。2,参数是一个正则表达式,返回一个原有正则表达式的拷贝。es6中,如果RegExp构造函数第一个参数是一个正则对象,那么可以使用第二个参数指定修饰符。而
一、字符的Unicode表示法JavaScript允许采用\uxxxx形式表示一个字符,其中xxxx表示字符的Unicode码点。表示法只限于码点在\u0000~\uFFFF之间的字符,超过该范围需要用两个双字节表示ES6改进:将码点放入大括号,就能正确解读该字符。转换参考:https://blog.csdn.net/hezh1994/ar