定义
在JavaScript中,几乎所有的对象都是Object类型的实例,它们都会从Objet.prototype继承属性和方法。Object 构造函数为给定值创建一个对象包装器。Object构造函数,会根据给定的参数创建对象,具体有以下情况:
- 如果给定值是
null或undefined,将会创建并返回一个空对象 - 如果传进去的是一个基本类型的值,则会构造其包装类型的对象
- 如果传进去的是引用类型的值,仍然会返回这个值,经他们复制的变量保有和源对象相同的引用地址
当以非构造函数形式被调用时,Object 的行为等同于 new Object()。
静态方法
Object.assign():通过复制一个或多个对象来创建一个新的对象。
Object.create():使用指定的原型对象和属性创建一个新对象。
Object.is():比较两个值是否相同。所有 NaN 值都相等(这与==和===不同)。
------------------------------------------------------------------------------------------------
Object.defineProperty():给对象添加一个属性并指定该属性的配置。
Object.defineProperties():给对象添加多个属性并分别指定它们的配置。
Object.getOwnPropertyDescriptor():返回对象指定的属性配置。
Object.getOwnPropertyNames():返回一个数组,它包含了指定对象所有的可枚举或不可枚举的属性名。
Object.getOwnPropertySymbols():返回一个数组,它包含了指定对象自身所有的符号属性。
-----------------------------------------------------------------------------------------------
Object.preventExtensions():防止对象的任何扩展。
Object.isExtensible():判断对象是否可扩展。
Object.freeze():冻结对象:其他代码不能删除或更改任何属性。
Object.isFrozen():判断对象是否已经冻结。
Object.seal():防止其他代码删除对象的属性。
Object.isSealed():判断对象是否已经密封。
------------------------------------------------------------------------------------------------
Object.getPrototypeOf():返回指定对象的原型对象。
Object.setPrototypeOf():设置对象的原型(即内部 [[Prototype]] 属性)。
------------------------------------------------------------------------------------------------
Object.keys():返回一个包含所有给定对象自身可枚举属性名称的数组。
Object.values():返回给定对象自身可枚举值的数组。
Object.entries():返回给定对象自身可枚举属性的 [key, value] 数组。
原型方法
Object.prototype.hasOwnProperty():返回一个布尔值 ,表示某个对象是否含有指定的属性,而且此属性非原型链继承的。
Object.prototype.isPrototypeOf():返回一个布尔值,表示指定的对象是否在本对象的原型链中。
Object.prototype.propertyIsEnumerable():判断指定属性是否可枚举,内部属性设置参见 ECMAScript [[Enumerable]] attribute 。
------------------------------------------------------------------------------------------------
Object.prototype.toLocaleString():直接调用 toString()方法。
Object.prototype.toString():返回对象的字符串表示。
Object.prototype.valueOf():返回指定对象的原始值。
回答问题
- Object.assign()是浅拷贝还是深拷贝?
- Object.is()/==/===区别?
- Object.create()和new Object()区别?
- Js遍历Object的方法有哪些?
- Object.keys()和for...in区别?
- Object.prototype.hasOwnProperty()和in区别?
参考:
Js基础---Object.create/{}/new Object
for in,Object.keys()与for of的区别