javaScript常见对象方法总结

1,object.assign()

        用于合并对象的属性。它可以将一个或多个源对象的属性复制到目标对象中,实现属性的合并。

语法  Object.assign(target, ...sources);

1,target:目标对象,将属性复制到该对象中。

2,sources:一个或多个源对象,它们的属性将被复制到目标对象中。

    const target = { a: 1, b: 2 };
    const source = { b: 4, c: 5 };

    const returnedTarget = Object.assign(target, source);

    console.log(target);
    console.log(returnedTarget)
    console.log(returnedTarget === target);//true

如果存在相同属性名,则后面的源对象将覆盖前面的源对象。

2,Object.create()

以一个现有对象作为原型,创建一个新对象。

语法

Object.create(proto)
Object.create(proto, propertiesObject)

1,proto 新创建对象的原型对象

2,propertiesObject(可选参数) 如果该参数被指定且不为 undefined,则该传入对象可枚举的自有属性将为新创建的对象添加具有对应属性名称的属性描述符。这些属性对应于 Object.defineProperties() 的第二个参数。

    //用法一
    const person = {
        isHuman: false,
        printIntroduction: function () {
            console.log(`My name is ${this.name}. Am I human? ${this.isHuman}`);
        },
    };

    const me = Object.create(person);

    me.name = 'Matthew'; // “name”是在“me”上设置的属性,但不在“person”上设置
    me.isHuman = true; // 可以覆盖继承的属性

    me.printIntroduction();
    //最终输出  My name is Matthew. Am I human? true
    
    //用法二
    let person={
       name:"李四",
       age:30,
       fun:function () {
            console.log(this.age)
       }
   }
   let newObj=Object.create(person,{
       name:{
           value:"来财"
       },
       color:{
           value:'456'
       }
   })
    console.log(newObj.name)//来财
    console.log(newObj.color)//456
    console.log(newObj.age)//30
    newObj.fun()

3,Object.defineProperty()

在一个对象上定义一个新属性,或修改其现有属性,并返回此对象。

语法:Object.defineProperty(obj, prop, descriptor)

1,obj属性所在的对象

2,prop属性所在的名字

3,descriptor描述符对象

    const o = {}; // 创建一个新对象

    // 通过 defineProperty 使用数据描述符添加对象属性的示例
    Object.defineProperty(o, "a", {
        value: 37,//包含这个属性的数据值
        writable: true,//表示能否修改属性的值
        enumerable: true,//表示能否通过for-in循环返回属性
        configurable: true,//是否能通过delete删除属性从而重新定义属性
    });
    console.log(o.a)
    // 'a' 属性存在于对象 o 中,其值为 37

4,Object.entries()

方法返回一个数组,包含给定对象自有的可枚举字符串键属性的键值对。

语法:Object.entries(obj)  obj参数是一个对象

    let obj={
        name:"张三",
        age:28,
        weight:140
    }
    for (const [key, value] of Object.entries(obj)) {
        console.log(`${key}: ${value}`);
    }
    console.log(Object.entries(obj))

返回值:一个由给定对象自有的可枚举字符串键属性的键值对组成的数组。每个键值对都是一个包含两个元素的数组:第一个元素是属性的键(始终是字符串),第二个元素是属性值。

5,Object.values()

返回一个给定对象的自有可枚举字符串键属性值组成的数组

语法:Object.values(obj)     obj为一个对象

    let person={
       name:"张三",
       age:28,
       weight:180
   }
   console.log(Object.values(person))
    //结果为一个数组['张三',28,180]

返回值是一个包含了给定对象的自有可枚举字符串键属性值的数组。

6,Object.keys()

返回一个由给定对象自身的可枚举的字符串键属性名组成的数组

语法:Object.keys(obj)     obj为一个对象

    let person={
       name:"张三",
       age:28,
       weight:180
   }
   console.log(Object.keys(person))
    //结果为一个数组['name','age','weight']

返回值一个由给定对象自身可枚举的字符串键属性键组成的数组。

7,Object.is()

确定两个值是否为相同值

语法:Object.is(value1, value2)

1,value1要比较的第一个值

2,value2要比较的第二个值

Object.is(25, 25); // true
Object.is("foo", "foo"); // true
Object.is("foo", "bar"); // false
Object.is(null, null); // true
Object.is(undefined, undefined); // true

返回值为一个布尔值

8,Object.freeze()

​Object.freeze() 静态方法可以使一个对象被冻结。冻结对象可以防止扩展,并使现有的属性不可写入和不可配置。被冻结的对象不能再被更改:不能添加新的属性,不能移除现有的属性,不能更改它们的可枚举性、可配置性、可写性或值,对象的原型也不能被重新指定。

语法:Object.freeze(obj)     obj为要冻结的对象

<script>
    "use strict"
    let obj={
        name:"张三",
        age:28,
        weight:140
    }
    Object.freeze(obj)
    //obj.name='李四'
    delete obj.name
    console.log(obj)
</script>

在严格模式下,修改属性或删除都会有错误提示

​9,Object.getOwnPropertyDescriptor()

可以取得给定属性的描述符。

语法:Object.getOwnPropertyDescriptor(obj, prop)

1,obj 属性所在的对象

2,prop要读取的属性描述符名称

   let book={}
   Object.defineProperties(book,{
       _year:{
           value:100
       },
       _editor:{
           value:200
       },
       year:{
           get:function(){
               return this._year
           },
           set:function (newValue) {
                if(newValue>50){
                    this._year=newValue
                    this._editor+=newValue-10
                }
           }
       }
   })
    let description1 = Object.getOwnPropertyDescriptor(book,"_year")
    console.log(description1.get)//undefined
    console.log(description1.value)//100
    console.log(description1.configurable)//false
    console.log(description1.enumerable)//false
    console.log(description1.writable)//false
    let description2 = Object.getOwnPropertyDescriptor(book,"_editor")
    console.log(description2.value)//200
    console.log(description2.configurable)//false

返回值是一个对象,如果是访问器属性,这个对象的属性有configurable,enumerable,get,set;如果是数据属性,这个对象的属性有configurable,enumerable,writable和value。

10,Object.getOwnPropertyDescriptors()

返回给定对象的所有自有属性描述符。

语法:Object.getOwnPropertyDescriptors(obj)     obj获取其所有自有属性描述符的对象

    let person={
       name:"张三",
       age:28,
       weight:180
   }
   let des1=Object.getOwnPropertyDescriptors(person)
    console.log(des1.name.configurable)//true
    console.log(des1.name.writable)//true
    console.log(des1.name.value)//张三

返回值是一个包含给定对象的所有自有属性描述符的对象。包含configurable,weitable,value,enumerable,get和set。

11,Object.getPrototypeOf()

返回指定对象的原型(即内部 [[Prototype]] 属性的值)。

语法:Object.getPrototypeOf(obj)       obj为返回原型的对象

    const proto = {};
    const obj = Object.create(proto);
    console.log( Object.getPrototypeOf(obj) === proto); // true

返回值为给定对象的原型

12,Object.setPrototypeOf()

可以将一个指定对象的原型(即内部的 [[Prototype]] 属性)设置为另一个对象或者 null。

语法:Object.setPrototypeOf(obj, prototype)

1,obj要设置其原型的对象

2,prototype该对象的新原型(一个对象或 null)。

    let person={
       name:"李四"
   }
   let animal={
       types:"小狗",
       fun:function(){
           console.log("这里被调用了")
       }
   }
   Object.setPrototypeOf(person,animal)
    console.log(person.types)//输出小狗
    person.fun()

返回值是一个指定的对象。

还有很多使用频率不高的方法,Object.isFrozen(),Object.isSealed(),Object.fromEntries()等等...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/529775.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024大环境差、行业卷,程序员依然要靠这份大厂级24 W字java面试手册成功逆袭!

2024大环境差、行业卷&#xff0c;程序员该怎么办&#xff1f; 2024年金三银四程序员跳槽或者找工作并不理想&#xff0c;迟迟找不到工作&#xff0c;甚至大厂还进行几轮裁员&#xff0c;导致整个就业市场都不是太好&#xff01; 出现这种情况是因为中美贸易战&#xff0c;导…

HubSpot出海营销CRM的创新实践:引领行业变革

在全球化的浪潮下&#xff0c;越来越多的企业选择出海&#xff0c;寻求更广阔的市场和更多的机遇。然而&#xff0c;出海营销并非易事&#xff0c;其中涉及到的CRM&#xff08;客户关系管理&#xff09;更是挑战重重。在这个领域&#xff0c;HubSpot以其创新的实践&#xff0c;…

C/C++如何快速学习?少走3年弯路

于我而言&#xff0c;最开始学习就是 C&#xff0c;除了计算机专业&#xff0c;其他专业可能学习的第一门编程语言为 C 语言&#xff0c;还是谭浩强爷爷那本&#xff0c;当时想着有点 C 基础&#xff0c;无外乎就是 C 语言的升级版&#xff0c;于是开启了 C 的路程。 语言这个…

访问网站时你的电脑都做了什么

电脑在访问百度时 首先在本地hosts文件里面查看本地有无域名对应的IP地址&#xff0c;若有就直接返回。若无&#xff0c;则本地DNS服务器当DNS的客户&#xff0c;向其它根域服务器发送报文查询IP地址&#xff0c;简单来说就是帮助主机查找IP&#xff0c;所以递归查询就在客户端…

SpringBoot之集成Redis

SpringBoot之集成Redis 一、Redis集成简介二、集成步骤2.1 添加依赖2.2 添加配置2.3 项目中使用 三、工具类封装四、序列化 &#xff08;正常都需要自定义序列化&#xff09;五、分布式锁 一、Redis集成简介 Redis是我们Java开发中&#xff0c;使用频次非常高的一个nosql数据库…

【双指针】接雨水

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨 示例 1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1]输出&#xff1a;6解释&#xff1a;上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的…

逆向案例十七(1)——webpack加如果之前发送公钥如何定位参数,基于中国五矿

网址链接&#xff1a;中国五矿集团有限公司采购电子商务平台 定位到数据包&#xff0c;载荷中param是一个加密参数。 每一个数据包前都有一个public返回公钥。 点击查看返回的数据 如何定位参数加密位置&#xff1f; 复制公钥包url的后面&#xff0c;进行搜索 &#xff0c;查…

无需训练,这个新方法实现了生成图像尺寸、分辨率自由

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站https://ai.hzytsoft.cn/ 更多资源欢迎关注 近日&#xff0c;来自香港中文大学 - 商汤科技联合实验室等机构的研究者们提出了FouriScale&…

C语言单链表

1. 单链表的概念和结构 概念&#xff1a;链表是一种物理存储结构上非连续、非顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表 中的指针链接次序实现的 。 链表与顺序表都属于线性表&#xff0c;顺序表在物理存储结构上是线性的&#xff0c;但是链表在物理存储结构上…

react-静态组件,动态组件

react09- 组件 静态组件 动态组件 静态组件&#xff1a; 函数组件&#xff0c;在第一次渲染完成后&#xff0c;组件中的内容&#xff0c;不会根据组件内的某些操作再次进行更新&#xff0c;页面并不会跟着改变 过程&#xff1a; 第一次渲染时&#xff0c;执行函数方法&#x…

202458读书笔记|《风来自你的方向》——我每次见你时的百米冲刺,加起来就是一生的长跑

《风来自你的方向》隔花人著 大绵羊BOBO绘&#xff0c;狗狗&#x1f436;绘本&#xff0c;这是看的第3本书。上俩本是《我是你的小狗 狗狗心事绘本》&#xff0c;《我是你的小狗2 当我有了你》。 同样的简短文字小狗&#x1f436;漫画&#xff0c;有爱的主人&#xff0c;有趣…

[中级]软考_软件设计_计算机组成与体系结构_12_概述及回顾

概述及回顾 总纲考情分析与分值海明校验码计算公式重点 总纲 考情分析与分值 海明校验码计算公式 2 r m r 1 2^r mr1 2rmr1 重点 数据的表示是计算题型的基础计算机组成中的CPU组成计算机组成中的存储系统&#xff0c;是核心重点的考察CISC与RISC及流水线执行时间的求取

lgwr超时如何判断存储还是cpu问题?(等待事件各种类型和说明及相关查询)

通过awr报告看&#xff1a; 分析&#xff1a; log file parallel write平均等待8毫秒 log file sync平均等待402毫秒 排查&#xff1a; log file sync parallel write lgwr cpu log file parallel write等待少说明存储不慢。 所以&#xff1a;log file sync等待长是因为…

css字体相关属性

属性汇总 属性作用font-family 设置文章字体 font-size 设置字体大小 font-weight设置字体粗细font-style设置字体斜体font总体设置以上属性 设置文章字体 font-family属性 案例&#xff1a; 设置字体大小 font-size属性 注意事项&#xff1a; 1.必须要加单位&#xff0…

很牛的一套仓库管理系统,免费复用【带源码】

今天给大家分享一套基于SpringbootVue的仓库管理系统源码&#xff0c;在实际项目中可以直接复用。(免费提供&#xff0c;文末自取) ​一、系统运行图&#xff08;设计报告和接口文档&#xff09; 1、登陆页面 2、物品信息管理 3、设计报告包含接口文档 二、系统搭建视频教程 …

Training - Kubeflow 的 PyTorchJob 配置 DDP 分布式训练 (ncclInternalError)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://blog.csdn.net/caroline_wendy/article/details/137569332 Kubeflow 的 PyTorchJob 是 Kubernetes 自定义资源&#xff0c;用于在 Kubernetes 上运行 PyTorch 训练任务&#xff0c;是 K…

谷歌浏览器快捷键, VScode 快捷键

谷歌浏览器快捷键 谷歌浏览器跳转标签页的方式&#xff1a; control Tab 跳转下一个标签页 control shift tab 上一个标签页 command 1-8 跳转对应的标签页&#xff0c;而command 9 则是跳转最后一个标签页 Previous Tab 插件实现谷歌浏览器两个tab页来回切换。快捷键为…

猫头虎分享已解决Error: 已解决“ModuleNotFoundError: No module named“

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 领域矩阵&#xff1a; &#x1f310; 猫头虎技术领域矩阵&#xff1a; 深入探索各技术领域&#xff0c;发现知识的交汇点。了解更多&#xff0c;请访问&#xff1a; 猫头虎技术矩阵…

Docker入门指南:从安装到基本操作和镜像构建的全面教程

文章目录 一、Docker简介二、Docker的安装三、Docker的基本概念四、Docker的基本操作五、Dockerfile和镜像构建六、总结 一、Docker简介 Docker是一个开源的应用容器引擎&#xff0c;它允许开发者将应用程序及其依赖项打包到一个可移植的容器中&#xff0c;然后在任何支持Dock…

24/04/09总结

异常: 1.异常是什么? 程序中可能出现的问题 2.异常体系的最上层父类是谁?异常分为几类? 父类:Exception。 异常分为两类:编译时异常、运行时异常 编译时异常和运行时异常的区别? 编译时异常:没有继承RuntimeException的异常&#xff0c;直接继承于Exception。 编译阶段就会…