1、Object.create()

参数:一个对象或者是定义好的对象

作用:创建一个空对象并使其原型指向传入的对象(vue的组件指向有用到)

示例:

   let phone = {brand: '华为',price:'6999',color:'black'}console.log(phone);let createObj = Object.create(phone)// 用于创建一个空对象,空对象会新增一个上级原型对象,上级原型对象就是传入的那个对象let createObj2 = Object.create(createObj)//再来一次会继续增加一层原型console.log(createObj,'createObj');//打印值为空对象console.log(createObj.color);//createObj为空对象没有color属性,但是通过原型链可以找到他的原型身上属性colorconsole.log(createObj2,'createObj2');

2、Object.assign()

参数:一个对象或多个对象

作用:复制对象或合并对象,(复制可以是深拷贝也可以是浅拷贝,拼接空对象,没有深层次时为深拷贝,不拼接时为浅拷贝,拼接对象有深层对象时深层的对象为浅拷贝)

示例:

    let phone3 = {brand: '苹果',price:'7999',color:'pink',iphone14:{price:'5999元' }}let assignObj = Object.assign(phone,phone2)//可用于合并对象,或者复制对象console.log(assignObj,'assignObj');//如传如的对象有相同属性后者将会覆盖前者let copyObj = Object.assign({},phone3)//直接拼接一个空对象那么结果对象是一个一级的深拷贝对象let copyObj2 = Object.assign(phone3)//不拼接空对象那么结果则是一个浅拷贝对象copyObj.brand = '三星'//改变copy对象的值copyObj2.brand = '中兴'//改变copy对象的值console.log(phone3,'phone3');//console.log(copyObj,'copyObj');//打印copyObj.brand为‘三星’,原值不变,所以是深拷贝console.log(copyObj2,'copyObj2');//打印copyObj.brand为'中兴',原值也是'中兴',所以是浅拷贝copyObj.iphone14.price = '99元包邮'console.log(copyObj,'深层次值');//改变copy后的对象深层次的值,原来的值也跟着变,由此可知深层次的值是浅拷贝

3、Object.defineProperty()

参数:一般收到三个参数,对象,字符串,属性对象,具体看代码

作用:添加或修改对象(vue实现响应式数据的方法)

示例:

    let obj = {name: '张三'}let ageValue = 21//定义一个中转变量let definePropertyObj = Object.defineProperty(obj, 'age', {// value: '20', //新增属性的value值enumerable: false, //可枚举的// writable: false, //可写的,可修改的configurable: false, //可配置的,可删除的get(){console.log('有人读取了age属性');return ageValue //此处需要有返回值},///set可以收到一个参数即修改的新值set(value){console.log('有人修改了age属性修改的新值为',value);ageValue = value// 此处一般做值的真正修改}})definePropertyObj.age = 22 //如果writable配置为false则不可修改新增属性// delete definePropertyObj.age //如果configurable配置为false则不可以删除新增的属性console.log(definePropertyObj, 'definePropertyObj');for (let item in obj) {console.log(item, 'for in'); //如果enumerable配置为false则新增属性不可枚举}console.log(definePropertyObj.age,'读取');//会调用getconsole.log(definePropertyObj.age = 33,'读取');//会调用set

4、Object.defineProperties()

参数:一般收到两个参数,对象、对象

作用:跟Object.defineProperty()一样的,但这个方法可以同时操作多个属性

示例:

    //多个属性时第二个参数写成对象形式
let definePropertiesObj = Object.defineProperties({}, {age: {value: 1,enumerable: true, //可枚举的writable: false, //可写的configurable: false //可写的,可修改的},sex: {value: 1,enumerable: true, //可枚举的writable: false, //可写的,可修改的configurable: false //可配置的,可删除的},});

5、Object.keys(obj)

参数:一般接收一个参数,(对象)

作用:遍历对象的key返回数组

示例:

    let keysObj = Object.keys(phone)//可以将对象的key值枚举出来console.log(keysObj,'keysObj');//打印结果为对象的所有key组成的数组

6、Object.values(obj)

参数:一般接收一个参数,(对象)

作用:遍历对象的value返回数组

示例:

    let valuesObj = Object.values(phone)//可以将对象的value值枚举出来console.log(valuesObj,'valuesObj');//打印结果为对象的所有value组成的数组

7、Object.entries(obj)

参数:一般接收一个参数,(对象)

作用:遍历对象的key与value返回二维数组

示例:

    let entriesObj = Object.entries(phone)//可以将对象的key与value以数组的形式枚举出来console.log(entriesObj,'entriesObj');//打印的结果是一个二维数组,对象的键值为一个数组,对象的每一项又是一个数组let Arr = [{name:'张三',age:12},{name:'张四',age:14},{name:'张无',age:16},]let arrObj = Object.entries(Arr)//参数也可以是一个数组console.log(arrObj,'arrObj');

8、Object.freeze(obj)

参数:一般接收一个参数,(对象)

作用:用于冻结一个对象,使其无法进行任何增删改查,可以适当提高性能

示例:

    let freezeobj = Object.freeze(phone)//常用于冻结一个对象console.log(freezeobj,'freezeobj');//返回的对象与原对象一样都是被冻结的无法对其进行任何增删改查phone.color = 'green'//修改无效console.log(phone,'冻结后');for (let item in phone){console.log(item,'item');//枚举好像没问题}

9、Object.fromEntries(obj)

参数:一般接收一个参数,(对象)

作用:Object.entries()的逆向操作,将键值对数组转为对象

示例:

    let fromEntriesobj = Object.fromEntries(entriesObj)//Object.entries()的逆向操作,可以将键值对数组转为对象console.log(fromEntriesobj,'fromEntriesobj');

10、Object.hasOwnProperty('string')

参数:接收一个字符串

作用:检查对象中是否存在某个属性

示例:

    let hasOwnPropertyObj = phone.hasOwnProperty('color')//检查对象中是否存在某个属性console.log(hasOwnPropertyObj,'hasOwnPropertyObj');//返回值是一个布尔值,存在为true// 这个方法只会检查对象的第一层,子对象里面的不检查

js对象常用方法总结相关推荐

  1. js获取URL参数以及Json对象常用方法

    JS中JSON对象常用方法 JSON.parse('{ "name":"runoob", "alexa":10000, "site ...

  2. js内置对象常用方法

    js内置对象常用方法 JS内置对象: ● String对象:处理所有的字符串操作 ● Math对象:处理所有的数学运算 ● Date对象:处理日期和时间的存储.转化和表达 ● Array对象:提供一个 ...

  3. 从零开始学前端 - 16. JS对象Object介绍及常用方法

    作者: 她不美却常驻我心 博客地址: https://blog.csdn.net/qq_39506551 微信公众号:老王的前端分享 每篇文章纯属个人经验观点,如有错误疏漏欢迎指正.转载请附带作者信息 ...

  4. JS 对象封装的常用方式

    JS是一门面向对象语言,其对象是用prototype属性来模拟的,下面,来看看如何封装JS对象. 常规封装 function Person (name,age,sex){ this.name = na ...

  5. js object 常用方法总结

    转载自  js object 常用方法总结 Object.assign(target,source1,source2,...) 该方法主要用于对象的合并,将源对象source的所有可枚举属性合并到目标 ...

  6. JavaScript原生对象常用方法总结

          这是4年前学习JavaScript基础的学习笔记,当初是照着W3School教程学习的,4年恍然如云烟,仿佛还在昨天.现发布与此,留作纪念,纪念那段不悔的青葱岁月. 下面都是我学习W3C ...

  7. JS对象拷贝:深拷贝和浅拷贝

    摘要:对象拷贝,简而言之就是将对象再复制一份,但是,复制的方法不同将会得到不同的结果. 本文分享自华为云社区<js对象深浅拷贝,来,试试看!>,作者: 北极光之夜.. 一.速识概念: 对象 ...

  8. JS中常用方法的封装【转载】

    JS中常用方法的封装[转载] 转载理由:我想这么好的内容,可不能因为作者的博客倒闭了就没了,所以就Fork了一份,并复制了一份到自己的博客. 编写自己的代码库(javascript常用实例的实现与封装 ...

  9. 史上最全 JS 数组常用方法总结.

    文章目录 js数组常用方法总结 判断是否为数组: Array.isArray() 1.0 数组新增or删除相关方法 push() 方法 末尾添加 unshift() 方法 开头添加 shift() 方 ...

最新文章

  1. [Android] 开发第二天
  2. 在移动端项目中使用vconsole
  3. springboot整合alibbaba-dubbo
  4. java 电子杂志,java毕业设计_springboot框架的时尚电子杂志网站
  5. 在windows xp下,一块网卡绑定多个ip
  6. 实战:自定义脚本启动mysql-mysql 5.6.19
  7. 设置对话框的小三角方法
  8. 使用sqljdbc连接mssql数据库,maven生成jar运行后报Exception in thread main java.lang.SecurityException错误...
  9. java-程序流程控制
  10. Netty实现群聊系统
  11. 艾迈斯半导体推出新款高性能读取IC,推动医疗和工业数字化X射线设备制造商降本增效
  12. 手机端显示电脑端隐藏html源码,div+css实现电脑端显示手机端隐藏代码
  13. Android从Assets复制文件到本地
  14. Android 13中的 Open Mobile API
  15. Arduino开发板DIY简易机械臂
  16. 子集生成的两种方法 (增量构造法 和 位向量法)
  17. Android BLE HIDS Data ,从问询DB 到写入Android 节点的flow 之四
  18. 内存卡误删除文件怎么恢复
  19. git 教程(12)--分支管理
  20. s24.基于 Kubernetes v1.25 (二进制) 和 Docker部署高可用集群

热门文章

  1. iOS和iPad OS 14 Beta 4发行说明
  2. PR2018模板|手机竖屏图文视频制作剪辑素材/抖音,快手等短视频创作模板
  3. Python 笑脸抓拍
  4. 透明、柔性指纹传感器问世
  5. 拼多多月卡怎么退?拼多多0元试用是真是假?
  6. 【C# 教程系列第 11 篇】什么是抽象类、抽象方法
  7. 通信教程 | 概述第一、二、三代CAN总线
  8. AMD推土机架构桌面CPU品牌各代情况
  9. Windows如何连接远程桌面?远程桌面控制软件推荐
  10. 浙大 | PTA 习题9-5 通讯录排序 (20分)