zoukankan      html  css  js  c++  java
  • es6中一些基本的使用方法

    es6中一些基本的使用方法

    const 定义常量

    let 块级变量

    用let定义的变量只在块当中起作用,离开变量外界的块(括号)就会被销毁。

    模板字面量

    用于字符串拼接和写模板,使用 ` (反引号,左上角波浪线),变量使用${} 

    复制代码
     1 var a="大帅比";
     2 var b="你呢";
     3 console.log( `my name is ${a},${b}?` );  //my name is 大帅比,你呢?
     4 
     5 var tpl=`<ul class="haha">  
     6     <li class="active">1</li>
     7     <li>2</li>
     8     <li>3</li>
     9     <li>4</li>
    10     <li>5</li>
    11 </ul>`  //不用加 
    来换行了
    复制代码

    解构赋值

    交换值

    1 var a=1;
    2 var b=2;
    3 [a,b]=[b,a];
    4 console.log(a,b);  // 2 1

    从数组里获得元素

    1 var array=[1,2,3,4];
    2 var [a, ,b]=array;
    3 console.log(a,b);  // 1 3

    参数解构

    1 var user={name:"李大白",age:"23",sex:"男"}
    2 function getUser( {name,age} ){
    3     return `我叫${name},今年${age}岁。`;
    4 }
    5 console.log( getUser(user) );  // 我叫李大白,今年23岁。

    返回值的解构

    复制代码
    1 function margin(){
    2    var left=1,right=2,top=3,bottom=4;
    3    return {left,right,top,bottom}
    4 }
    5 var {left,bottom}=margin();
    6 console.log(left,bottom);   // 1 4
    复制代码

    深度匹配

    复制代码
    1 function setting(){
    2     return { display:{color:'red'},keyboard:{layout:'querty'} }
    3 }
    4 
    5 var { display:{color: dis_color },keyboard:{layout: key_layout } }=setting();
    6 console.log(dis_color,key_layout); // red querty
    复制代码

    类和继承

    复制代码
     1 class Animal{
     2     constructor(name){   //构造函数
     3         this.name=name;
     4     }
     5     speak(){   //方法
     6         console.log(this.name+" makes a noise");
     7     }
     8 }
     9 var animal=new Animal("dog");
    10 animal.speak();  //dog makes a noise
    复制代码

    如果在es5中,要这么写

    复制代码
     1 var Animal=(function(){
     2     function Myconstructor(name){
     3         this.name=name;
     4     }
     5     Myconstructor.prototype.speak=function(){
     6         console.log(this.name+" makes a noise");
     7     }
     8     return Myconstructor;
     9 })();
    10 
    11 var animal=new Animal("dog");
    12 animal.speak();   //dog makes a noise
    复制代码

    继承

    复制代码
    1 class Cat extends Animal{
    2     speak(){
    3         super.speak();
    4     }
    5 }
    6 var cat=new Cat("短尾猫");
    7 cat.speak();    //短尾猫 makes a noise
    复制代码

    extends关键字代表继承,super关键字代表父类

    箭头函数

    箭头函数相当于匿名函数,并且简化了函数定义。()中放参数,没有参数就省略,箭头后面是函数体。

    复制代码
     1 var fun1=(x)=>x*x;
     2 var fun2=(x,y)=>{
     3     if(x>y){
     4         return true;
     5     }else{
     6         return false;
     7     }
     8 }
     9 var set=(name,age)=>( {name:name,age:age} )  //直接返回对象需要加小括号
    10 
    11 fun1(4);  //16
    12 fun2(7,1);  // true
    13 set("李大白","1000");  // Object {name: "李大白", age: "1000"}
    复制代码

    es5中this比较坑,当需要外层的this时有几种方法

    用变量存储引用

    1 var _this=this;
    2 $(".btn").click(function(){
    3     _this.sendData();
    4 });

    直接绑定

    1 $(".btn").click(function(){
    2     this.sendData();
    3 }.bind(this) );

    es6中

    1 $(".btn").click( ()=> this.sendData() );  //箭头函数this绑定的是词法作用域,肯定指向外层,哪怕用apply,call也没法改变

    遍历for...of

    es5的遍历

    1 var array=["a","b","c","d"];
    2 for (var i=0,l=array.length;i<l;i++){
    3     var a=array[i];
    4     console.log(a);
    5 }

    或者

    1 array.forEach(function(a){  //不能用break语句跳出循环,且不能在这个封闭的函数内使用return语句
    2     console.log(a);
    3 })

    es6  for...of

    1 for(var a of array ){  //可以使用break,continue,return等语句
    2     console.log(a);
    3 }

      for...of和for...in的区别,for...in主要用于获取属性名,如果用来遍历数组,确实可以获得序号,但序号都是字符串形式。

    默认参数

    复制代码
    1 function abc(x=0,y=2,flag=true){
    2     console.log(x,y,flag);
    3 }
    4 
    5 abc();  // 0 2 true
    6 abc(4,0,false); // 4 0 false
    复制代码

    剩余参数

    用于参数数量不固定的场合,剩余参数前面需要加...

    复制代码
    1 function reduce(base,...nums){
    2     var result=base;
    3     for(var i of nums){
    4         result-=i;
    5     }
    6     return result;
    7 }
    8 reduce(10,5,3); // 2
    复制代码

    es5

    复制代码
    1 function reduce(base){
    2     var result=base;
    3     [].shift.apply(arguments);
    4     for(var i=0,l=arguments.length;i<l;i++){
    5         result-=arguments[i];
    6     }
    7     return result;
    8 }
    9 reduce(10,5,3);  // 2
    复制代码

    展开运算符 ...

    1 Math.max(2,100,1,6,43);  //100
    2 Math.max([2,100,1,6,43]); //NaN
    3 Math.max(...[2,100,1,6,43]); //100   展开的效果

    数组拼接也可以使用...

    复制代码
    1 arr1=[2,100,1,6,43];
    2 arr2=["a","b","c","d"];
    3 arr3=arr1.concat(arr2);
    4 arr4=[...arr1,...arr2];
    5 
    6 console.log( arr3 );   // [2, 100, 1, 6, 43, "a", "b", "c", "d"]
    7 console.log( arr4 );   // [2, 100, 1, 6, 43, "a", "b", "c", "d"]
    复制代码
  • 相关阅读:
    自写 jQuery 大幅弹窗广告插件(不喜勿拍)
    反省:一个失败的产品
    javascript变量:全局?还是局部?这个得注意!
    前端工作常常会用到的一些经验技巧(三)
    Jquery伪选择器学习笔记
    前端工作常常会用到的一些经验技巧(二)
    (总结)工作中常用的js自定义函数——日期时间类
    js 数组引用 发现的问题
    一位资深程序员大牛给予Java初学者的学习路线建议(转)
    正则表达式
  • 原文地址:https://www.cnblogs.com/MrZouJian/p/7649219.html
Copyright © 2011-2022 走看看