Object.keys(obj)
返回一个所有元素为字符串的数组,其元素来自于从给定的obj可枚举的属性。这些属性的顺序与手动遍历该对象属性时的一致。
Object.getOwnPropertyNames(obj)
返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性但不包括Symbol值作为名称的属性)组成的数组。
Object.getOwnPropertySymbols(obj)
返回一个给定对象自身的所有 Symbol 属性的数组。
Object.getOwnPropertyDescriptor(obj)
返回指定对象上一个自有属性对应的属性描述符。
const descriptor1 = Object.getOwnPropertyDescriptor({
property1: 42
}, 'property1');
console.log(descriptor1.configurable);
// expected output: true
console.log(descriptor1.value);
// expected output: 42
Object.create(proto[, propertiesObject])
- 返回一个新对象,使用现有的对象来提供新创建的对象的proto。
- proto : 必须。表示新建对象的原型对象,该参数可以是
null
,对象
, 函数的prototype
(创建空的对象时需传null , 否则会抛出TypeError
异常)。 - propertiesObject : 可选。 添加到新建对象自身的属性描述符及相应的属性名称。这些属性对应
Object.defineProperties()
的第二个参数。
注意
不同于var obj = new Object(...)
或var obj = {...}
直接创建的对象,通过propertiesObject添加的属性,其描述符默认均为false
因此
// bar is a property which isn't enumerable
var myObj = Object.create({}, {
bar: {
value: 2
}
});
myObj.foo = 1;
console.log(Object.keys(myObj)); // console: ['foo']
Object.assign(target, ...sources)
- 将所有可枚举属性值从一个或多个源对象复制到目标对象,并返回目标对象。
- 该方法使用源对象的
getter
和目标对象的setter
。 - 浅拷贝
假如源值是一个对象的引用,它仅仅会复制其引用值。
Object.assign({}, { age: 1 },{ name : "ming" });
var t1 = {};
var output = Object.assign(t1, { age: 1 });
console.log(output === t1);//true
网友评论