ES6基础内容-01

ES6整理

1、ES6模块化:
  • JavaScript在es6加入了模块(module)体系的语法,在此之前我们编写代码时必须依靠require.js之类的工具来实现模块化加载。其实模块化的概念在其他语言中很常见,比如python/java里的import导入包,正好es6里也是用import关键字。
  • es6的模块化使用import/export关键字来实现模块的导入和导出,并且 自动采取严格模式(无论是否代码顶部是否标注了" use strict ")。考虑到未来所有的代码,其实都是运行在模块之中,所以 ES6 实际上把整个语言升级到了严格模式。-

2、禁止使用的东西:
#####禁止使用with:
区别一下with和Object.assign    

3、不能对只读的属性进行赋值操作,---冻结的属性也属于只读属性
##字符串的length属性只读
##通过 Object.freeze(obj)可以实现冻结,这时候obj对象的属性值不能进行修改了
##对象中只有get方法,没有set方法,因此,也是只读属性[测试发现通过obj.a能获取值,但是不能修改]
##不允许使用八进制 065
##不可删除的属性不能被删除,例如:数组的length属性  delete arr.length
##不能删除不可配置属性
##冻结的属性不能被删除
##禁止使用eval
eval的用法有:
监听调用:
for(var i=0;i<5;i++){
  eval("div"+i).addEventListener("click",clickHandler);
}
遍历对象:
var  obj1 = {a: 1 ,b: 2 };
var  obj2 = {a: 2 ,b: 2 };
var  obj3 = {a: 3 ,b: 2 };
for ( var  i = 1 ; i < 4 ; i ++ ){
    eval ( "obj" + i ). a += 10 ;
}
console . log ( obj1 , obj2 , obj3 )
求和: var num1=3;
var num2=5;
var type="*";
console.log(eval(num1+type+num2))
 
 
function  getSum ( a , b ){
             console . log ( a + b );
        }
         eval ( "getSum(5,8)" );
 
 
##不可以给eval和arguments赋值
##禁止使用arguments.callee arguments.callee.caller 不使用匿名函数 使用环境函数,通过传参
##不要在顶层使用this
 
###增加了保留字:
    protected 受保护的函数或者属性
    static静态
    interface 接口 类的接口
 

4、箭头函数
1、let定义一个有范围的变量,不是window的属性,因此不能去直接用window调用
2、let定义的变量仅限于循环及花括号语句;
3、let定义的变量仅仅作用于语句块内【如果内部和外部存在同一个变量,则结果取语句块内的】
4、如果函数的外部和内部定义了同一个变量,则结果取内部的,
/* let a=3;
        function fn(){
            let b=5;
            console.log(a);//3
            if(b<10){
                let a=20;
                // let定义的变量仅作用于语句块内
                console.log(a);//20
            }
            console.log(a);//3
        }

 
5、const常量
1、如果常用常量进行定义,引用地址不可修改,但是对象的属性可以修改
2、如果对象定义为一个常量,它是不能清除的,直接清除会报错
 

 
6、箭头函数在书写上需要注意的:
1、函数的参数,只有一个可以不用写括号   var  arr  =  a => a + 100 ;
2、如果函数的参数没有或者在一个以上,就需要加括号() var arr=()=>200;
3、如果函数内容只有一句话,并且返回该一句,就不用了加{ }并且不用写return;
4、如果函数中有多句代码,或者不返回任何内容,就需要加{},这时候需要加return 或者 console.log
5、一些使用场景:
     var s = arr.map(item=>item+10);
     arr  =   arr . sort (( a , b ) => b - a );
     var  arr2  =  arr . filter ( item => item > 3 )
     arr . some ( item => item > 5 )
     setInterval  (() => { console . log ( "aaa" )}, 1000 )

 
7、this指向
1、对象中:属性描述this时,这个时候对象还没有生成,所以this指向外层的this指向,
    对象方法中的this是该对象本身 --- 由于方法是在对象执行完以后才调用的
 
2、当我们使用了箭头函数后,就会忽略了回调函数的this指向(默认情况下,回调函数的this指向window)
 
3、forEach map reduce filter 事件回调函数 等一些回调函数都遵从回调函数的this指向,指向window
 
4、我们在写函数的封装时,由于在一个对象的方法中函数中调用了对象的另外一个方法,肯定要加this的
 
 
 
5、在进行拖拽的时候,可以把mousedown的this先指向Utils,开始的时候还是要将需要移动的div 和 Utils存起来
 

8、解构赋值
1、数组的解构赋值
数组的解构赋值是按照顺序进行的
解构赋值可以用来做交换----冒泡排序 [ arr [ i ], arr [ i + 1 ]] = [ arr [ i + 1 ], arr [ i ]]
 
2、let [a,b,c]=[1,2,6];
3、解构赋值可以赋一个初始值 let [a,b=10] = [10]; 得到 a=10 b=10;
 
 
4、对象的解构赋值
1、对象的解构赋值是按照属性名来解构的,和顺序没关系 var {c,a,b}={a:1,b:2,c:3};
      var  { age , color , name } =  {age: 200 ,name: 52 ,color: "red" }
      console . log ( age , name , color )
 
2、设置解构赋值的默认值 var {c,a,b=10}={a:1,c:3};
 
3、 如果多重对象解构时,属性名相同,可以使用 : 另外设置新变量名
在这个例子中,b的属性被解构了,因此b就不存在了,后面新加了一个b赋值
let  { a , b :{ a : a1 }, b =  {a: 1 ,b:{a: 2 }};
console . log ( a , a1 , b )
 
 
4、解构字符串 数组的方法或属性
let {length} = "faejlg";
console.log(length); 可以得到字符串的长度
 
5、  传参时,解构赋值可以让参数传递顺序不同
 
 
 
6、解构JSON字符串
 
 
 
 

9、字符串的方法
1、 console.log("abcdef".includes("bc")) 判断字符串中是否有该内容
2、 console.log("abcde".startsWith("a"));//字符串是否是0开始
3、 console.log("abcde".startsWith("b",1));//字符串在第几位是否从b开始
4、 console.log("abcde".endsWith("e"));//以e为结尾
5、 console.log("abcde".endsWith("d",4));//从第四位开始是否是最尾部 --也就是第4位的前一位是不是d true
6、 console.log("abc".repeat(3));赋值几次
7、 console.log((18).toString(16).padStart(2,"0")); 如果字符串的长度不足几位,就在它的前面补充设置的字符
8、 console.log(Math.floor(Math.random()*10000000).toString().padEnd(7,"0")) 如果字符串的长度不足几位,就在它的末尾补充设置的字符

9、字符模板:
 
10、浅复制 ... 三个点
浅复制,其次使用...进行复制时,地址也会发生改变,形成新对象
var obj={a:1,b:2,c:{d:1}};
obj1={...obj};
console.log(obj1===obj2); false
 
 

10、symbol
1、symbol也是一种类型,独一无二 算上这个总共有7中类型了
2、如果使用symbol定义了变量,那么将无法遍历
 
 
3、消除魔术字符串
 

11、Set
1、列表
    特点:插入、添加、删除速度快,无重复,只要值的列表(不能有键)
         没有索引,不能使用for循环,也不能用下标修改或者获取
 
2、一些方法:
 
a.add() a.delete() a.has() a.clear()
 
3、使用forEach遍历得到的键和值完全相同
 
 
for of遍历
 
for value of a
for value of a.entries()
 
 
4、创建一个空的Set
 
 
5、利用new Set(arr) 可以对数组进行去重
 
6、数组里面可以增加对象
    如果增加的是的对象,无法删除????
 
 
2、弱引用类型:
 
 
 
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值