Object.entries()、keys()、values()、assign()、getOwnPropertySymbols()、getPrototypeOf()、setPrototype()

仅用于本人记笔记用,有不当或者不完整的地方欢迎大家多多指教!谢谢!

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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值