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、弱引用类型:
 
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值