- 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]]