es5+es6日常记录

193 阅读2分钟
Promise 
-------------
resolve 成功回调   reject 失败回调    链式结构是重点

Promise.prototype.then()   
Promise对象含有then方法,then()调用后返回一个Promise对象,
意味着实例化后的Promise对象可以进行链式调用,而且这个then()方法可以接收两个函数
,一个是处理成功后的函数,一个是处理错误结果的函数
Promise.all()    所有操作成功返回成功,否则失败
Promise.race()   只返回最快的操作结果


对象合并  
-------------
$.extend()
var obj1 = {'a': 1};
var obj2 = {'b': 1};
var c = $.extend(obj1, obj2);
obj1 和 c 被修改

var obj1={'a':1};
var obj2={'b':2,'c':3};
for(var key in obj2){
     if(obj2.hasOwnProperty(key)===true){         
           obj1[key]=obj2[key];
     } 
}
console.log(obj1);     //{'a':1,'b':2,'c':3};

assign() 
var o1 = { a: 1 };
var o2 = { b: 2 };
var o3 = { c: 3 };
var obj = Object.assign(o1, o2, o3);
console.log(obj);    // { a: 1, b: 2, c: 3 }
console.log(o1);     // { a: 1, b: 2, c: 3 }, 目标对象自身也会改变。 assign方法 合并指向第一个对象 后边的对象不会改变


扩展运算符 ...
-------------

合并数组
var arr1 = ['a', 'b'];  
var arr2 = ['c'];  
var arr3 = ['d', 'e']; 
var arrAdd = [...arr1, ...arr2, ...arr3]

解构赋值
const [first, ...rest] = [1, 2, 3, 4, 5];            
first // 1          
rest // [2, 3, 4, 5] 

const [first, ...rest] = [];
first // undefined         
rest // []

let arrayLike = {
            '0': 'a',
            '1': 'b',
            '2': 'c',
            length: 3     //需要指定长度
      };
let arr = [...arrayLike];   //['a','b','c']

arr (a,b,c) {
    return a + b + c;
}
arr(...[1,2,3])   // 6


reduce()
-------------
接受一个函数,返回一个值。该方法会从一个累加值开始,不断对累加值和
数组中的后续元素调用该函数,直到数组中的最后一个元素,最后返回得到的累加值。
var numbers = [65, 44, 12, 4];
function getSum(total, num) {
    return total + num;
}
function myFunction(item) {
    document.getElementById("demo").innerHTML = numbers.reduce(getSum);
}

join()
-------------
把数组中的所有元素放入一个字符串,传入指定符号分割字符串。
var arr1 = [1,2,3];
var arr2 = [1,2,3];
arr1.join()   // "123"
arr2.join(".") // "1.2.3"


删除数组元素
-------------
pop()
删除数组末尾的元素
shift()
删除数组第一个元素
pop() 和 shift() 方法都将删掉的元素作为方法的 返回值返回
splice()
第一个传入的参数 指定下标    
第二个传入的参数 删除数量
var nums = [1,2,3,100,200,4,5]; 
nums.splice(3,2);    //1,2,3,4,5