es6 对象新增的api
一.Object.is():在用法上和严格相等(===)大多数情况下一样,但对于NaN、0、-0、+0的判断不一样
console.log(1 === 1); //true
console.log(Object.is(1,1));//true
console.log(-0 === +0); //true
console.log(Object.is(-0,+0));//false
console.log(NaN === Nan); //false
console.log(Object.is((NaN ,(NaN ));//true
二.Object.assign()用来合并对象
参数1:目标对象 参数2:需要被合并的对象
var name = {"name":"波波"}
var age = {"age":18}
var sex = {"sex":"男"}
var obj = Object.assign(name ,age ,sex)
console.log(obj );//{"name":"波波", "age":18,"sex":"男"}
var obj1 = Object.assign(name1 ,age ,sex1)
console.log(obj1);//{"age":18}
console.log(obj1 === age); //true
注意点:
1.返回值是传入的第一个目标对象,会把所有的对象合并上去的时候 再返回
2.第一个参数必须是对象 如果不是对象 就会把他转换成对象
typeof Object.assign(2) // "object"
3.如果是undefined 或者null 没办法转换成对象那么就会报错
Object.assign(undefined) // 报错
Object.assign(null) // 报错
4.如果在需要合并的多个对象里面 有相同的属性 那么后面的属性就会对前面的进行覆盖
var name = {"name":"小鱼"}
var age = {"name":"苗苗","age" : 17}
var sex = {"age":16,"sex" : 女 }
var obj= Object.assign(name ,age ,gender);
console.log(obj) //{name:"苗苗",age:16 ,sex:"女"}
5.如果undefined和null不是第一个参数 那么就不会报错 返回原值的第一个对象
var obj = Object.assign(name, undefined);
//var obj = Object.assign(name, null);
//var obj = Object.assign(name, {});
console.log(obj) //{"name":"小鱼"}
- assign方法是浅拷贝 不是深拷贝
var objAssign = Object.assign({}, age);
console.log(objAssign === age);
var a = {
b : {c : 3}
}
var s = Object.assign({}, a);
a.b.c = 9;
console.log(s.b.c);
console.log(a.b.c);
三. Object,setPrototypeOf 给一个对象设置原型对象
参数1 : 目标对象 参数2 : 原型对象
var obj = {
n1 : 15,
n2 : 18
}
console.log(obj.__proto__ === Object.prototype);
obj.__proto__ = {
var obj1 = {
n3 : 56,
n4 : 60
}
var a = Object.setPrototypeOf(obj, obj1);
console.log(a);
console.log(a === obj);
console.log(obj.__proto__);
四. Object.getPrototypeOf(obj) 获取对象原型的方法 参数是需要查询的对应名称
console.log(Object.getPrototypeOf(obj));
五. Object.keys() 是将对象所有的属性名遍历 然后返回一个数组(如果对象是json数据返回对象的key值 如果对象是数组返回数组的下标)
六. Object.values() 是将对象所有的属性值遍历 然后返回一个数组 (如果对象是json数据返回对象的value值 如果对象是数组返回数组的值)
var obj1 = {
name : "xxx",
age : 18,
}
var obj2 = ['a','b','c']
console.log(Object.keys(obj1)); //["name", "age"]
console.log(Object.keys(obj2)); //["0", "1", "2"]
七.Array.from() 方法从一个类似数组或可迭代对象中创建一个新的数组实例。通俗来说就是把一个不是数组的东西变成数组
ar a = {
0:'000',
1:'111',
2:'222'
}
a = Array.from(a)
console.log(a) // ["000","111","222"]
八.Array.prototype.fill() 方法用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引。
const array1 = [1, 2, 3, 4];
console.log(array1.fill(0, 2, 4));// [1, 2, 0, 0]
console.log(array1.fill(5, 1));// [1, 5, 5, 5]
console.log(array1.fill(6));// [6, 6, 6, 6]
九.copyWithin() 方法浅复制数组的一部分到同一数组中的另一个位置,并返回它,不会改变原数组的长度。
const array1 = ['a', 'b', 'c', 'd', 'e'];
console.log(array1.copyWithin(0, 3, 4));// : Array ["d", "b", "c", "d", "e"]
console.log(array1.copyWithin(1, 3));// Array ["d", "d", "e", "d", "e"]
十.Array.prototype.find
find()方法会返回满足条件的第一个元素,如果没有,则返回undefined
var arr = [1, 2, 3, 4, 5];
var above5 = arr.find(ele => ele > 5);
var below5 = arr.find(ele => ele < 5);
console.log(above5); // undefined
console.log(below5); // 1