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)//456console.log(newObj.age)//30newObj.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.nameconsole.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=newValuethis._editor+=newValue-10}}}})let description1 = Object.getOwnPropertyDescriptor(book,"_year")console.log(description1.get)//undefinedconsole.log(description1.value)//100console.log(description1.configurable)//falseconsole.log(description1.enumerable)//falseconsole.log(description1.writable)//falselet description2 = Object.getOwnPropertyDescriptor(book,"_editor")console.log(description2.value)//200console.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)//trueconsole.log(des1.name.writable)//trueconsole.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()等等...

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

51单片机学习笔记16 小型直流电机和五线四相电机控制

51单片机学习笔记16 小型直流电机和五线四相电机控制 一、电机分类二、小型直流电机控制1. 简介2. 驱动芯片ULN2003D3. 代码实现dc_motor_utils.cmain.c 三、五线四相步进电机控制1. 步进电机工作原理2. 构造3. 极性区分4. 驱动方式5. 28BYJ-48步进电机&#xff08;1&#xff0…

3D可视化技术亮相高铁站,引领智慧出行新潮流

在科技飞速发展的今天&#xff0c;我们的生活正经历着前所未有的变革。高铁站作为现代交通的重要枢纽&#xff0c;也在不断地创新和进步。 3D可视化技术通过三维立体的方式&#xff0c;将高铁站内部和外部的结构、设施、流线等以更加直观、生动的形式呈现出来。乘客们只需通过手…

Docker容器嵌入式开发:MySQL表的外键约束及其解决方法

本文内容涵盖了使用MySQL创建数据库和表、添加数据、处理字符集错误、解决外键约束问题以及使用SQL查询数据的过程。通过创建表、插入数据和调整字符集等操作&#xff0c;成功解决了数据库表中的字符集问题&#xff0c;并使用INSERT语句向各个表中添加了示例数据。同时&#xf…

MySQL - MySQL的RR隔离级别是如何基于ReadView机制实现的?

RR级别下,这个事务读取一条数据,无论读多少次,都是一个值,别的事务修改数据之后,哪怕提交了,你也是看不到人家修改的值的,这就避免了不可重复读的问题。 同时如果别的事务插入了一些新的数据,你也是读不到的,这样就可以避免幻读问题。这到底是如何实现的呢? 首先我…

《深入Linux内核架构》第1章 简洁和概述

目录 1.1 内核的任务 1.2 实现策略 1.3 内核的组成部分 ​1.3.1 进程、进程切换、调度 1.3.2 UNIX 进程 1.3.3 地址空间和特权级别 1.3.4 页表 1.3.5 物理内存的分配 1.3.6 计时 1.3.7 系统调用 1.3.8 设备驱动程序 1.3.9 网络 1.3.10 文件系统 1.3.11 模块和热插…

AIGC实战——StyleGAN(Style-Based Generative Adversarial Network)

AIGC实战——StyleGAN 0. 前言1. StyleGAN1.1 映射网络1.2 合成网络1.3 自适应实例归一化层1.4 风格混合1.5 随机变化 2. StyleGAN 生成样本3. StyleGAN23.1 权重调制与解调3.2 路径长度正则化3.3 非渐进式增长 4. StyleGAN2 生成样本小结系列链接 0. 前言 StyleGAN (Style-Ba…

安卓的认证测试

1 CTS CTS 是 Android 兼容性测试套件&#xff0c;用于验证设备是否符合 Android 平台的兼容性标准。它包含一系列测试用例&#xff0c;涵盖了设备的各个方面&#xff0c;如硬件功能、软件功能、API 的正确实现等。通过 CTS 测试&#xff0c;设备厂商可以确保其设备符合 Andro…

学习笔记:解决拖延

1 解决拖延&#xff0c;减轻压力的关键心态和方法 1.1 要点梳理 拖延是因为自己一直在逃避&#xff0c;重点是要有效突破逃避圈&#xff0c;进入学习圈&#xff0c;扩展成长圈。 毒蛇曲线&#xff08;见思维导图&#xff09;中越是临近截止期限&#xff0c;拖延的焦虑越上升…

VRRP虚拟路由实验(思科)

一&#xff0c;技术简介 VRRP&#xff08;Virtual Router Redundancy Protocol&#xff09;是一种网络协议&#xff0c;用于实现路由器冗余&#xff0c;提高网络可靠性和容错能力。VRRP允许多台路由器共享一个虚拟IP地址&#xff0c;其中一台路由器被选为Master&#xff0c;负…

C++初阶:6.string类

string类 string不属于STL,早于STL出现 看文档 C非官网(建议用这个) C官网 文章目录 string类一.为什么学习string类&#xff1f;1.C语言中的字符串2. 两个面试题(暂不做讲解) 二.标准库中的string类1. string类(了解)2. string类的常用接口说明&#xff08;注意下面我只讲解…

设计模式总结-装饰者模式

模式动机 一般有两种方式可以实现给一个类或对象增加行为&#xff1a; 继承机制&#xff0c;使用继承机制是给现有类添加功能的一种有效途径&#xff0c;通过继承一个现有类可以使得子类在拥有自身方法的同时还拥有父类的方法。但是这种方法是静态的&#xff0c;用户不能控制增…

Golang-Gin 框架写的免杀平台,内置分离、捆绑等多种BypassAV方式

Golang-Gin 框架写的免杀平台&#xff0c;内置分离、捆绑等多种BypassAV方式 Golang-Gin 框架写的免杀平台&#xff0c;内置分离、捆绑等多种BypassAV方式。 cool 时间线&#xff1a; Golang Gin 框架写的免杀平台- (2021.11.12)Golang Gin 框架写的免杀平台&#xff0c;更…

环境监测站升级选择ARM网关驱动精准数据采集

物联网技术的深入发展和环保需求的不断攀升&#xff0c;API调用网关在环境监测领域的应用正成为科技创新的重要推手。其中&#xff0c;集成了API调用功能的ARM工控机/网关&#xff0c;以其出色的计算性能、节能特性及高度稳定性&#xff0c;成功搭建起连接物理世界与数字世界的…

【教程】App打包成IPA文件类型的四种方法

摘要 本教程总结了将App应用程序打包为IPA包的四种常用方法&#xff0c;包括Apple推荐的方式、iTunes拖入方法、自动编译脚本和解压改后缀名方法。每种方法都有其特点和适用场景&#xff0c;在实际开发中可以根据需求选择合适的方式进行打包。通过本教程&#xff0c;您将了解到…

微服务(狂神)

什么是微服务&#xff1a; 微服务方案&#xff1a; 1. SpringCloud NetFlix 2. Dubbo 3. SpringCloud Alibaba 解决了什么问题&#xff1a; 1. 服务过多&#xff0c;客户端怎么访问 2. 服务过多&#xff0c;服务间怎么传值 3. 服务过多&#xff0c;如何治理 4. 服务过多…

美团一面4/9

面的时候自我感觉良好&#xff0c;复盘感觉答的一坨。。 0怎么比较两个对象 0Integer 不使用new会自动装箱&#xff0c;返回提前创建的。使用new就创建新对象。 1.Object类有什么方法 java中Object类中有哪些常用方法以及作用_java中object的方法有什么用-CSDN博客 2.hash…

基于JSP的网上订餐系统

第一章 绪论 1.1课题背景与意义 自新世纪以来&#xff0c;我国经济发生翻天覆地的变化。中国经济发展迎来空前巨大的机遇与挑战&#xff0c;世界性的发展交流在这三十年较近四十年的时间中整体性上升发展&#xff0c;东西文化的碰撞&#xff0c;不断为国民经济的发展注入新鲜…

大话设计模式——19.责任链模式(Chain of Responsibility Pattern)

简介 使多个对象都有机会处理请求&#xff0c;从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链&#xff0c;并沿着这条链传递该请求&#xff0c;直到有一个对象处理它为止。 主要有两个核心行为&#xff1a;1.处理请求&#xff1b;2.将请求传递到下一节点 U…

“AI”科普丨Transformer架构图解最强教程!

今天给大家分享一篇关于深度学习模型Transformer的文章。我愿称之为讲解Transformer模型最好的文章。 文章内容主要介绍 Transformer 模型的具体实现&#xff1a; Transformer整体架构 Transformer概览 引入张量 自注意力机制Self-Attention 多头注意力机制Mutil-Head Att…

算法四十天-删除排序链表中的重复元素

删除排序链表中的重复元素 题目要求 解题思路 一次遍历 由于给定的链表是排好序的&#xff0c;因此重复的元素在链表中的出现的位置是连续的&#xff0c;因此我们只需要对链表进行一次遍历&#xff0c;就可以删除重复的元素。 具体地&#xff0c;我们从指针cur指向链表的头节…