js 常见的Object方法

JavaScript013

js 常见的Object方法,第1张

Object.entries(obj)

将一个可枚举对象按照键值对展开为数组

Object.assign(target, source)

将一个或多个可枚举对象的可枚举属性复制到 target 对象,返回 target 对象。第一级属性深拷贝,以后级别属性浅拷贝

Object.freeze(obj)

相应的也有判断是否冻结的方法----Object.isFrozen()

冻结一个对象。一个被冻结的对象再也不能被修改,包括所有的属性,甚至包括他的原型。返回与原对象相同参数的对象

Object.create(obj)

创建一个新对象,将现有的对象创建为新对象的 proto 。返回一个新对象

Object.keys(obj)

遍历一个对象,将 key 返回为数组

Object.defineProperty(obj, prop, descriptor)

参数:

obj:被操作对象

prop:修改或要定义的属性名

descriptor:修改或要定义的属性的属性描述,即prop的描述

新增或修改一个对象的属性,并返回该对象

扩展:在vue中通过递归调用此方法,为对象的每一个属性绑定get()、set()方法,实现对象的数据监听

Object.getPrototypeOf(obj)

返回目标对象的 prototype 的值。

给定对象的原型。如果没有继承属性,则返回 [null]

上篇文章 JS 对象(Object)的深入解析—私有属性 介绍了对象的私有属性,这篇文章主要讲下对象的原型链属性,这些属性是每个对象都可以访问调用的,好了,废话不多说,开始进入主题。

该原型属性指向Object对象本身

该方法可以用来判断是否是对象的私有属性,如果是则返回true,否则返回false。for...in 遍历私有和原型属性,通过hasOwnProperty和in方法可以判断某个属性是否是原型属性

prototypeObj.isPrototypeOf(object)

检测prototypeObj这个对象是是否在object对象的原型链上。

obj.propertyIsEnumerable(prop)

测试对象的某个属性是否可枚举,返回Boolean。

注意

每个对象都有一个 propertyIsEnumerable 方法。此方法可以确定对象中指定的属性是否可以被 for...in 循环枚举,但是通过 的属性除外。如果对象没有指定的属性,则此方法返回 false 。

比较

数组转化相同

时间转化不同

数字转化不同

valueOf()方法返回对象的原始值。

注意

JavaScript调用valueOf方法将对象转换为原始值。你很少需要自己调用valueOf方法;当遇到要预期的原始值的对象时,JavaScript会自动调用它。

valueOf()重写

都是代表对象,其中object代表这个类型的名称,比如:var a={}console.log(typeof a)打印出来的结果就是object,表示a的数据类型是对象,而{}是对象的体现形式,好比数组用[]