node+TS+koa+vue开发商城全栈

es6新扩展

新增数据类型symbol()

定义两个数据,var a = symbol(‘a’);var b=symbol('b');console.log(a==b);//返回值为false,即使两个值一模一样,symbol创建的也是两个不同的值。

其最主要的作用是起到数据私有化。

如果我们定义一个构造函数function Person(name,gender){ this.name= name,this.gender=gender);var p1=new Person('莫涛‘,'男');console.log(p1.gender);/输出为男

一般的数据保护私有化,我们使用闭包,也就是

 var Person =(function (){
            var gender = ''
            function P(name,gender){ 
                this.name= name
                gender=gender  //传过来的值赋值给了上面的gender私有变量
            }
            P.prototype.getgender=function(){
                return _gender
                }
               return P
            })()
            var p1 =new Person('莫涛','男')
            console.log(p1) //输出 只有莫涛,男被赋值给了私有变量gender,这时就无法直接获取gender的值
            console.log(p1.getgender()) //输出男,通过这种方式获取gender,保护了gender的值 
image

es6提供了更简便的方式,使用Symbol来保护数据私有化

var Person =(function (){
            var _gender = Symbol('gender')
            function P(name,gender){ 
                this.name= name
                this[_gender]=gender  //传过来的值赋值给了上面的gender私有变量
            }
            P.prototype.say=function(){
                console.log(this[_gender])
            }
                return P
            })()
            var p1 =new Person('莫涛','男')
            // p1.gender = 'asd'
            console.log(p1)
            console.log(p1.say())
image

即使他输出确确实实有一个Symbol(gender)属性,你去使用p.Symbol('gender'),它会输出undefined,因为symbol类型,即使完全一样,也不是同一个值。只能通过在内部构造函数的原型prototype中添加方法截取到gender值,这就起到了数据保护的功能,也比闭包更直观。

新增变量声明let const

var,let,const中

var声明预解析,可以先使用在声明,其他两个不行

let,const具有块作用域{},var没有

const常量定义,不能修改,其他两个可以

新增解构赋值

var arr=[1,2,3,4,5]   var [a,b] = arr;//等同于 let a =arr[0],let b =arr[1]

var obj={bar:100,foo:200} var{foo:f,bar:b} =obj;//等同于新建了一个{f:200,b:100}的对象

解构赋值的最主要作用是从一个大的数据中提取出需要的部分重新定义一个值。

扩展运算符 ...

将一个数组或者对象前面加上...,就将其外层的衣服脱掉,形成参数的形式

var arr1=[1,2,3];var arr2=[4,5,6];return arr3=[...arr1,...arr2]//返回一个[1,2,3,4,5,6]的数组

字符串扩展

新增unicode表示法 '\u{1f602}' 就将unicode编码用花括号括起来
模板扩展,使用``反引号(tab键上面)将字符串括起来,可以保持原有的格式
变量表达式解析:'{表达式}'即在字符串中添加{1+1},他会显示为2

迭代器*

image

即只有含有symbol.iterator方法的对象才能进行for of迭代,迭代器的使用,使程序员更灵活操作编程

具体介绍查看:https://www.runoob.com/w3cnote/es6-iterator.html

箭头函数

一个匿名函数中function(){}可以简写为()=>{},如果前面的参数只有一个可以省略括号a=>{},如果函数体里只有一句话可以省略为a=>a++

常用于ajax中回调函数的调用。this.axios.get('https://www.jianshu.com/').then(res=>{})

函数扩展

函数中不确定会传多少参数的时候,以前是使用arguments对象,arguments自动接收参数为一个数组,所以不用写形参。

function arrPush(){
var arr = arguments[0]
for(i=1,i<arguments.length,i++) 
arr.push(arguments[i]
}
var arr=[1,2,3]
arrPush(arr,'a','b','c')//返回[1,2,3,'a','b','c']

现在使用...newData获取后面的参数,newDate也是一个数组,用法一致,就是形参有改变

如:function arrPush(arr,...newDate)

set

类似数组,是无序的,无重复值的,可用于数组去重

var arr=[1,1,5,6,4,7,8,]
arr=[...new Set(arr)] //数组去重为[1,5,6,4,7,8]

promise

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • JavaScript的相关语法知识:1、函数(important)基本上所有的高级语言(C、OC、JavaScri...
    天山雪莲_38324阅读 649评论 0 2
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile丽语阅读 3,858评论 0 6
  • 看这本书是在markdown在做的笔记,更友好的阅读方式访问: github es6.md(https://git...
    汪汪仙贝阅读 474评论 0 0
  • JavaScript之父:Brendan Eich 。 -基本语法:借鉴了C语言和Java语言。-数据结构:借鉴了...
    饥人谷_kule阅读 615评论 0 0
  • 这么多年了,终于堵住两个涨停板。没有出手,再忍忍。 年轻就是不信邪,也不遵守规律。大盘涨,个股会跌,所以不怎么关注...
    晓春cq阅读 113评论 0 0