Js基础---Object

131 阅读2分钟

定义

在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区别?

参考:

Object | MDN

Js基础---Object.create/{}/new Object

5分钟彻底理解Object.keys

for in,Object.keys()与for of的区别

Js基础---比较相等(==和===、Object.is)

重学前端(二)-你真的了解你JS的对象吗?

关于 JavaScript Object.keys() 排序问题的探索

JavaScript日常开发中常用的Object操作方法

Javascript 遍历对象的四种方法