- Object.defineProperty(obj, prop, descriptor)用于定义对象的数据属性(对象属性氛围数据属性和访问器属性)
-
- obj:必需。目标对象
- prop:必需。需定义或修改的属性的名字
- descriptor:必需。目标属性所拥有的特性
-
-
- value:就是属性的值。
- writable:决定属性能否被赋值。
- enumerable:决定 for in 能否枚举该属性。
- configurable:决定该属性能否被删除或者改变特征值。
Object.defineProperty(o, "b", {value: 2, writable: false, enumerable: false, configurable: true});
-
-
Object.getOwnPropertyDescriptor(obj, prop)用于查看对象的数据属性
- obj: 需要查找的目标对象
- prop: 目标对象内属性名称
-
Object.assign(target, source) 用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
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 }
- Object.getOwnPropertyNames(obj)
返回一个数组,包含对象自身的所有属性(不含Symbol属性,但是包括不可枚举属性)的键名。
let cc = Symbol() var obj = {aa: 11, bb: 22}; obj[cc] = 33; Object.getOwnPropertyNames(obj); // ["aa", "bb"]
- Object.getOwnPropertySymbols(obj)
返回一个数组,包含对象自身的所有Symbol属性的键名。
let ee = Symbol(); let ff = Symbol(); var obj = {aa: 11, bb: 22}; obj[ee] = 33; obj[ff] = 44; Object.getOwnPropertySymbols(obj); // [Symbol(), Symbol()]
- Reflect.ownKeys(obj)返回一个数组,包含对象自身的所有键名,不管键名为Symbol或字符串,也不管是否可枚举。
let ee = Symbol(); let ff = Symbol(); var obj = {aa: 11, bb: 22}; obj[ee] = 33; obj[ff] = 44; Reflect.ownKeys(obj) // ["aa", "bb", Symbol(), Symbol()]
- Object.keys(obj); Object.values(obj); Object.entries(obj); 返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性)的键名,值,键值对。
var obj1 = {cc: 1, dd: 2, ff: 3}; Object.values(obj1); // [1, 2, 3] Object.keys(obj1); // ["cc", "dd", "ff"] Object.entries(obj1); // [["cc", 1],["dd", 2],["ff", 3]]