ES6小总结——持续更新(欢迎补充)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/HarryHY/article/details/102506671

变量的声明——var、let、const

1.传统的使用var来声明

var

在你使用这个的时候会造成一个全局的和局部的问题
而现在的单页面应用的框架中是非常避讳这种全局的变量的声明的 除非是万不得已的情况 不然就是被怼

2.这是现在都在使用的一个变量的声明方式——let

let

主要的作用在于他是一个局部的变量 不会由于你在函数内外而造成过多的问题

3.申明一个不可修改的常量——const

const

在现在单页面应用的框架中也是经常使用的
主要是当我们在使用一个JS封装时 或者命名一个常量时会使用

解构赋值——{}、[]

这个功能基本算的上是最好用的功能之一了
数组解构
在数组的解构赋值当中模式必须统一

let [a,b,c]=[1,2,3];

解构也是可以有默认值的

let [flag = true] =[];

对象的解构赋值——{}

let { code,msg } = req.data;

字符串解构——[]
字符串也是可以解构的
但是我觉得这个字符串的结构没有展开符的好用

[a,b,c,d,e] = "harry"

展开符——…

将对象或者数组中的每一个属性给单独取出来

    ...mapState(["room_id"]),

这个可以结合解构赋值一起使用 效果更佳
当你在对一个数组进行一个展开的时候取到的是数组里每一个单独的元素 所以没有一个堆栈的关系 是一个全新的空间

ES6二进制转化十进制——0B

let binary = 0B100101;
console.log(binary);

ES6八进制转化十进制——0o

let b=0o666;
console.log(b);

数字判断——isFinite

只要是数字,不论是浮点型还是整形都会返回true,其他时候会返回false。

Number.isFinite()

NaN判断——isNaN

NaN是特殊的非数字

Number.isNaN(NaN)

判断整数——isInteger

判断是否为整数

Number.isInteger(xx)

小数点保留——parseInt、parseFloat

Number.parseFloat(9.18)//9.18
Number.parseInt(9.18)//9

整数取值范围——MAX_SAFE_INTEGER、MIN_SAFE_INTEGER、isSafeInteger

最大安全整数——MAX_SAFE_INTEGER

Number.MAX_SAFE_INTEGER

最小安全整数——MIN_SAFE_INTEGER

Number.MIN_SAFE_INTEGER

安全整数判断——isSafeInteger

Number.isSafeInteger()

字符串模板——${}

这个里面也是可以支持标签和运算的
当你是要做变量之间的改变是在${}里面
其余的都是在``中进行即可

`恭喜${this.result},中了优惠券`;

字符串的查找——includes、startsWith、endsWith、repeat

字符串整体查找——includes

str.includes(hello)

判断开头是否存在:——startsWith

str.startsWith(hello)

判断结尾——endsWith

str.endsWith(hello)

复制字符串——repeat

'hello|'.repeat(3)

数组的转化——Array.of

可以转化num类型str类型

Array.of(1,2,3);

数组的查找——find

在函数中如果找到符合条件的数组元素就进行return

array.find(fn(value,index,array){
return }))

数组填充——fill

数组进行填充

array.fill(想要填充的内容,开始的位置,结束的位置)

数组的遍历——for…of、entries、forEach、some、map

for…of循环:

for (let item of arr){
    console.log(item);
};
for (let index of arr.keys()){
    console.log(index);
}
for (let [index,val] of arr.entries()){
    console.log(index+':'+val);
}

手动循环

let list=arr.entries();
console.log(list.next().value);
console.log(list.next().value);
console.log(list.next().value);

forEach

arr.forEach((val,index)=>console.log(index,val));

filter

arr.filter(x=>console.log(x));

some

arr.some(x=>console.log(x));

map

console.log(arr.map(x=>'web'));

主动抛出错误—— throw new Error

throw new Error( xxxx )抛错

function add(a,b=1){
   
    if(a == 0){
        throw new Error('This is error')
    }
     return a+b;
}

箭头函数——()=>{}

箭头函数默认的this指向上下文
箭头函数中不可加new
this也无法在使用.bind方法修改

()=>{}

判断对象或者数组中是否存在某个属性——in

返回的是布尔值

      let obj = {
        a:'asd'
      };
      console.log("a" in obj);    

判断数组中的下标是否存在

  let obj = ['aa','bb','cc']
  console.log(3 in obj);
  console.log(2 in obj);

数组转化为字符串——join()、toString()、

join()方法就是在数组元素中间,加了一些间隔,开发中很有用处。

let arr=['1','2','3'];
console.log(arr.join('|'));

.toString转换时只是是用逗号隔开了。

let arr=['1','2','3'];
console.log(arr.toString());

对象key值变量

如果key的值是一个变量的话使用 [ ] 包起来

let key='chibaba';
var obj={
    [key]:'dakouchi'
}
console.log(obj.skill);

对象比较—— Object.is( )

Object.is(obj1.name,obj2.name)

合并对象——assign

可以用作浅拷贝——assign

let obj3 = Object.assign(obj,obj1,obj2)

JS的拷贝

Symbol类型

在ES6当中给我们定义了一个全新的值 symbol
symbol的声明

let f= Symbol();

Set数据结构——增删改查

Set本身带有去重

let array = new Set(['1','2'])

增加:——add

array.add('str')

查找:——has

array.has('str')

删除所有的元素——clear

array.clear()

删除单个元素——delete

array.delete('1')

Set数据的循环输出——for of

for(let item of array){
    console.log(item)
}

size的元素个数——size

array.size

weakSet
weakSet需要你自己手动的添加进去

let weakObj=new WeakSet();
let obj={a:'1',b:'2'}
weakObj.add(obj);
console.log(weakObj);

map的数据类型——Map

map的赋值

var newarray=new Map();

特殊的键值对形式——set

mnewarray.set(any,'qq');

map的增删查
查询:——get

newarray.get('str')

删除一个特定的值——delete

newarray.delete('any')

删除所有的值——clear

newarray.clear('any')

查找某个值——has

newarray.has('any')//返回的true 或者 false

proxy代理 ES6增强 对象 函数 生命周期 预处理

get 在得到值之前做的一个预处理
一定要return出去
三个参数
——target是自己本身的对象
——key是对象的键名
——第三个参数可以省略

var pro = new Proxy({
    add: function (val) {
        return val + 1;
    },
    name: 'harry'
}, {
        get:function(target,key,property){
            console.log('come in Get');
            return target[key];//一定要return出去
        }
    });
console.log(pro.name);

set修改值做的处理
一定要return出去
四个参数
——target是自己本身的对象
——ket同是对象的键名
——value要修改后的值
——receeiver原来的数据

var pro = new Proxy({
    add: function (val) {
        return val + 10;
    },
   name: 'harry'
}, {
        set:function(target,key,value,receiver){
            console.log(`    setting ${key} = ${value}`);
            return target[key] = value;//一定要return出去
        }
    });
 
console.log(pro.name);
pro.name='123456';
console.log(pro.name);

apply

get = function () {
    return 'harry111';
};
var handler = {
    apply(target, ctx, args) {
        console.log('do apply');
        return Reflect.apply(...arguments);
    }
}
 
var pro = new Proxy(target, handler);
console.log(pro());

promise

在前端的面试中特别喜欢考这个 应用也非常的广泛
由于JS本身是单线程的 在异步当中解决了 回调地狱(特别是node当中)
.then
通过.then的方法使异步变成同步 按照顺序进行执行

let promise = new Promise(function(resolve, reject) {
  console.log('Promise');
  resolve();
});

promise.then(function() {
  console.log('resolved.');
});
console.log('Hi!');

.all方法
多异步同时执行 以时间长 为全部消耗时间

const p = Promise.all([p1, p2, p3]);

.race
数据请求的竞速或对图片使用竞速使用一个默认图片——谁快执行谁

const p = Promise.race([p1, p2, p3]);

promise的JS实现

function Mypromise(fn){
    var that = this;
    fn(function (result){
        that.resolveInfo = result;
    },function(result){
        that.rejectInfo = result;
    },function(result){
        that.rejectInfo = result;
    })
}
Mypromise.prototype.then = function(fn1,fn2){
    fn1(this.resolveInfo)
}
var p  = new Mypromise(function(resolve,reject){
    console.log(666)
})
p.then(function(result){
    alert(result);
},function(){
    
})

Class——类

定义

class pipi{
    name(val){
        console.log(val);
    }
}

实例化:

let titi= new pipi;
titi.name('qiqi');

类自身的参数传递:
类似现在流行的框架中的data值利用的就是constructor

constructor(a,b){
	this.a=a;
	this.b=b;
}

class的继承
通过使用extends来得到之前的所有值和方法

class pipi extends Coder{
}
let qiqi=new pipi ;
qiqi.name('111');

猜你喜欢

转载自blog.csdn.net/HarryHY/article/details/102506671