仅用于本人记笔记用,有不当或者不完整的地方欢迎大家多多指教!谢谢!
1. Object.entries(): 会把一个对象可枚举的属性及其属性值以数组其中一项 [属性,属性值]的形式返回来,但是不会遍历原型prototype上的属性,与for in不同,for in 遍历的时候会遍历原型prototype上的属性。
1.传入的是一个对象的时候
const obj = {name: '张三丰', age: 18, sex: '男', hobby: '打太极'}
const result = Object.entries(obj)
console.log(result)
result:
[
[ 'name', '张三丰' ],
[ 'age', 18 ],
[ 'sex', '男' ],
[ 'hobby', '打太极' ]
]
2.传入的是一个数组的时候
const arr1 = ['红红', '花花', '兰兰', '倩倩']
const result = Object.entries(obj)
console.log(result)
result: [ [ '0', '红红' ], [ '1', '花花' ], [ '2', '兰兰' ], [ '3', '倩倩' ] ]
2. Object.keys(): 返回对象可枚举的属性的key构成的数组,不包括原型上的属性。
const obj = {name: '张三丰', age: 18, sex: '男', hobby: '打太极'}
const result = Object.keys(obj)
console.log(result)
result: [ 'name', 'age', 'sex', 'hobby' ]
3. Object.values() : 返回对象可枚举属性的属性值构成的数组,不包括原型上属性的属性值。
const obj = {name: '张三丰', age: 18, sex: '男', hobby: '打太极'}
const result = Object.values(obj)
console.log(result)
result: [ '张三丰', 18, '男', '打太极' ]
4. Object.assign(target, source1, source2, ... , sourceN): 用于将所有可枚举属性的值从一个或多个源对象分配到目标对象。它将返回目标对象。
target:目标对象,source:源对象,
注意:
1)如果目标对象中的属性具有相同的键,则属性将被源对象中的属性覆盖。
2)后面的源对象的属性将类似地覆盖前面的源对象的属性。
3) Object.assign( )的返回值是目标对象。
const target = { a: 1, b: 2 };
const source = { b: 4, c: 5 };
const returnedTarget = Object.assign(target, source);
console.log(target);
// expected output: Object { a: 1, b: 4, c: 5 }
console.log(returnedTarget);
// expected output: Object { a: 1, b: 4, c: 5 }
# 合并对象
const o1 = { a: 1 };
const o2 = { b: 2 };
const o3 = { c: 3 };
const obj = Object.assign(o1, o2, o3);
console.log(obj); // { a: 1, b: 2, c: 3 }
console.log(o1); // { a: 1, b: 2, c: 3 }, 注意目标对象自身也会改变。
# 合并具有相同属性的对象
const o1 = { a: 1, b: 1, c: 1 };
const o2 = { b: 2, c: 2 };
const o3 = { c: 3 };
const obj = Object.assign({}, o1, o2, o3);
console.log(obj); // { a: 1, b: 2, c: 3 }
5. Object.getOwnPropertySymbols():
方法返回一个给定对象自身的所有 Symbol 属性的数组,因为所有的对象在初始化的时候不会包含任何的 Symbol,除非你在对象上赋值了 Symbol 否则Object.getOwnPropertySymbols()只会返回一个空的数组。
const obj = {};
const a = Symbol("a");
const b = Symbol("b");
obj[a] = "localSymbol";
obj[b] = "globalSymbol";
const objectSymbols = Object.getOwnPropertySymbols(obj);
console.log(objectSymbols.length); // 2
console.log(objectSymbols) // [Symbol(a), Symbol(b)]
console.log(objectSymbols[0]) // Symbol(a)
6. Object.getPrototypeOf(): 方法返回指定对象的原型(内部[[Prototype]]属性的值)
补充:obj. _ proto _也可以获取指定对象的原型,有兼容性问题、
const obj = {
name: '哈利波特',
hobby: '打豆豆'
}
Object.getPrototypeOf(obj)
console.log( Object.getPrototypeOf(obj));
console.log(obj.__proto__);
console.log(obj.__proto__ === Object.getPrototypeOf(obj)); // true
// constructor: ƒ Object()
// hasOwnProperty: ƒ hasOwnProperty()
// isPrototypeOf: ƒ isPrototypeOf()
// propertyIsEnumerable: ƒ propertyIsEnumerable()
// toLocaleString: ƒ toLocaleString()
// toString: ƒ toString()
// valueOf: ƒ valueOf()
// __defineGetter__: ƒ __defineGetter__()
// __defineSetter__: ƒ __defineSetter__()
// __lookupGetter__: ƒ __lookupGetter__()
// __lookupSetter__: ƒ __lookupSetter__()
// __proto__: (...)
// get __proto__: ƒ __proto__()
// set __proto__: ƒ __proto__()
7. Object.setPrototypeOf():
Object.setPrototypeOf():
8. Object.getOwnPropertyNames()