博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ES6编程风格整理
阅读量:6861 次
发布时间:2019-06-26

本文共 4680 字,大约阅读时间需要 15 分钟。

一. const优于let的几点,多用const

  1. const可以提醒大家,不要被改变

  2. const比较符合函数式编程,(在函数式编程里面,运算是不能改变值的,只能新建值,有利于分布式编程,因为值不变)

  3. js编译器对const进行了优化,有利于程序的运行效率(本质的区别:编译器内部对其处理机制)

let a='22';   a='11';console.log(a);//11    let c=[];    c.push('a');console.log(c);//["a"]复制代码

二. 对象的解构

数组

const s=['a','b','c'];const [one,two,three]=s;console.log(three);//c复制代码

对象

function test(){    return{r:1,o:2}}const result = test();const {r,o}  =result;//const {o,r} =result;console.log(r);//1复制代码

三 .字符串模板

const aaa ="hello";const bbb = "world";const ccc = `for ${aaa} ${bbb} bar`;console.log(ccc);//for hello world barconsole.log(ccc.startsWith("for"));//true 以什么开头console.log(ccc.endsWith("bar"));//true 以什么结尾console.log(ccc.includes("or"));//true 包含const ddd = txt `for ${aaa} ${bbb} bar`;function txt(strs,...values){    console.log(strs);//["for ", " ", " bar", raw: Array(3)]    console.log(values);//["hello", "world"]}复制代码

四 .对象和数组

const aa = "您好啊";const resulta =Array.from(aa);console.log(resulta);//["您", "好", "啊"]const testa=["水果","水",...aa];console.log(testa);//["水果", "水", "您", "好", "啊"]const k = "arr";const testb ={    k1:1,    aa,    testa,    q(){        console.log("企鹅")    },    [k+1]:1}console.log(testb);//{k1: 1, aa: "您好啊", testa: Array(5), q: ƒ, arr1: 1}testb.q();//企鹅复制代码

ps: 下面的两种写法,第一种不建议,建议按第二种写,当初期不知道要不要扩张,可以先写上

const ar={};Object.assign(a,{x:3});复制代码
const arb ={x:null};arb.x=3;console.log(arb);//{x: 3}复制代码

判断

console.log(NaN===NaN);//falseconsole.log(Object.is(NaN,NaN));//true复制代码

原型链

const eat = {
getEat(){
return "鸡腿"}}const drink = {
getDrink(){
return "啤酒"}}let sunday = Object.create(eat);console.log(sunday.getEat());//鸡腿console.log(Object.getPrototypeOf(sunday));//{getEat: ƒ}Object.setPrototypeOf(sunday,drink);console.log(sunday);//{}>__proto__:>getDrink:ƒ getDrink()+__proto__:Objectconsole.log(sunday.getDrink());//啤酒let sundays = { __proto__:eat, getDrink(){ return super.getDrink() + "可口可乐" }}sundays.__proto__=drink;console.log(sundays.getDrink());//啤酒可口可乐复制代码

五. 函数

const fn = function pp(argu){}console.log(fn.name);//pp复制代码

箭头函数

(()=>{    console.log("fn init")//fn init})();复制代码

同一个函数的两种写法,第二种为简写

const restles = [1,2,3].map(function(index){    return index *3})console.log(restles);//[3, 6, 9]复制代码
const restless = [1,2,3].map((index)=>index *3);console.log(restless);//[3, 6, 9]复制代码

函数的this指向

window.aas='30';const aaar ={    ll:40,    ps:function(){        const qqq ={            ll : 50,            ptest:()=>{                console.log(this.ll)            }        }        qqq.ptest();    },}aaar.ps();//40??不懂复制代码

其他

function testsss(aaaaa=1,{options=true}={}){    console.log(aaaaa);//30    console.log(options);//111}testsss(30,{options:111});复制代码
function ssrx (...results){    //替代了arguments,可以不要用了    console.log(results)//[30, {…}]}ssrx(30,{options:111});复制代码

六. 遍历

for in(返回的是数组的索引) 和 for of(返回的是数组的值),PS:不支持json对象

const arr = ["a","b","c"];const obj ={a:"1",b:"2",c:"3",};for (let i in arr){    console.log(i);//1 2 3}for (let v of arr){    console.log(v);//a b c}for (let v of obj){    console.log(v);//obj is not iterable 报错}复制代码

七. class 类,命名要大写+set+get+static

class Person{//父类    constructor(age){        this.age=age;    }    tell(){        console.log(`小王的年龄是${this.age}`);    }}const xiaowang = new Person(30);console.log(xiaowang.age);//30xiaowang.tell();//小王的年龄是30class Man extends Person{//子类实现了继承了父类    //想实现重载或重写的话,先调用父类的方法    constructor(age){        super(age);this.arr=[];    }    //重写tell方法    tell(){        //必须要先调一下,不然不支持多个参数的重载        super.tell();        console.log("hallo");    }    //get和set是不需要主动调用的,外面直接赋值就行    set menu(data){this.arr.push(data);}    get menu(){
return this.arr;} //static static init(){ console.log("static") }}const xiao= new Man(20);console.log(xiao.age);//20xiao.tell();//halloxiao.menu = 'get';console.log(xiao.menu);//["get"]Man.init();//static复制代码

八. Set是一个集合 + Map(键值对,没有key)

let arrs = new Set("123");arrs.add("0");arrs.add("0");//同样的东西add进来是不管的,只add一个arrs.delete("2");//删除for(let data of arrs){    console.log(data);//1 3 0}console.log(arrs);//Set(4) {
"1", "2", "3", "0"}console.log(arrs.size);//4console.log(arrs.has("1"));//trueconsole.log(arrs.has("2"));//falsearrs.clear();//清除console.log(arrs.size);//0Maplet food = new Map();let result = {},cook = function(){};//这些都可以作为一个key,也是map神奇的地方food.set(result,'rr');food.set(cook,'rrs');console.log(food);//Map(2) {
{…} => "rr", ƒ => "rrs"}console.log(food.get(result));//rrconsole.log(food.get(cook));//rrsconsole.log(food.size);//2food.delete(result);console.log(food.size);//1复制代码

九. 数组去重

const arre=[1,2,3,4,5,5,1];const rest = [...new Set(arre)];console.log(rest);//(5) [1, 2, 3, 4, 5]复制代码

转载地址:http://csayl.baihongyu.com/

你可能感兴趣的文章
网站建设前要注意这些网站设计误区可能会毁了网站
查看>>
《乐高EV3机器人搭建与编程》一1.2 LEGO系列产品
查看>>
《HTML、CSS、JavaScript 网页制作从入门到精通》——6.3 表格的边框
查看>>
《Spring攻略(第2版)》——1.9 用依赖检查属性
查看>>
并发集合(七)创建并发随机数
查看>>
论文导读:面向卷积神经网络的卷积核冗余消除策略
查看>>
当下流行架构中的一些技术思考
查看>>
Hadoop学习第四天之hadoop命令操作(上)
查看>>
走进阿里云:做云数据、大计算的No.1
查看>>
Gradle 基础
查看>>
listview优化(中)
查看>>
当安全遇上AI 阿里聚安全算法挑战赛完美收官
查看>>
怪”博士闵万里:用人工智能,解决吃饭出行问题
查看>>
ES6 + Webpack + React + Babel 如何在低版本浏览器上愉快的玩耍(下)
查看>>
日志服务(原SLS)新功能发布(8)--日志服务Web Tracking功能
查看>>
kvm虚拟化学习笔记(十三)之kvm虚拟机磁盘文件读取小结
查看>>
kvm虚拟化学习笔记(四)之kvm虚拟机日常管理与配置
查看>>
SlideView 图片滑动(扩展/收缩)展示效果
查看>>
iOS开发之即时通讯之Socket(AsyncSocket)
查看>>
算法设计
查看>>