javaScript常见对象方法总结

news2024/11/23 1:12:49

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()等等...

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

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

相关文章

【JVM】如何解决内存泄漏问题

什么是内存泄漏&#xff0c;如何解决内存泄漏问题&#xff1f; ⚫ 内存泄漏&#xff08;memory leak&#xff09;&#xff1a;在Java中如果不再使用一个对象&#xff0c;但是该对象依然在GC ROOT的引用链上&#xff0c;这 个对象就不会被垃圾回收器回收&#xff0c;这种情况就…

java Web在线考试管理系统用eclipse定制开发mysql数据库BS模式java编程jdbc

一、源码特点 JSP 在线考试管理系统是一套完善的web设计系统&#xff0c;对理解JSP java 编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,eclipse开发&#xff0c;数据库为Mysql5.0&#xff0c;使…

华为 2024 届校园招聘-硬件通⽤/单板开发——第一套(部分题目分享,完整版带答案,共十套)

华为 2024 届校园招聘-硬件通⽤/单板开发——第一套 部分题目分享&#xff0c;完整版带答案(有答案和解析&#xff0c;答案非官方&#xff0c;未仔细校正&#xff0c;仅供参考&#xff09;&#xff08;共十套&#xff09;获取&#xff08;WX:didadidadidida313&#xff0c;加我…

Go —— channel (二)

一个空的 channel 会产生哪些问题 读写nil管道均会阻塞触发死锁。关闭的管道仍然可以读取数据&#xff0c;向关闭的管道写数据会触发panic。 问&#xff1a;如果有多个协程同时读取一个channel&#xff0c;channel会如何选择消费者 channel 会按照维护的 recvq 等待读消息的…

结构体及联合体大小计算

结构体大小计算 结构体大小的计算的依据是结构体内存对齐 对齐规则&#xff1a; 1.结构体的第一个成员对齐到和结构体变量起始位置偏移量为0的地址处 2.其他成员变量要对齐到某个数字&#xff08;对齐数&#xff09;的整数倍的地址处。 &#xff08;对齐数编译器默认的一个对齐…

云数据库价格一瞥(华为云、百度智能云、腾讯云、阿里云)

最近&#xff0c;大家似乎和价格“磕”上了。本文仅考虑主流产品&#xff08; RDS MySQL、Redis &#xff09;的部分主流规格&#xff0c;对各家厂商的价格做一个对比&#xff0c;供参考。 TL;DR&#xff1a; 总体来看&#xff0c;各家云厂商价格趋于持平&#xff0c;部分主流商…

Android音视频的基础

视频是什么&#xff1f; 视频就是由一系列图片构成的。 视频帧 帧&#xff0c;是视频的一个基本概念&#xff0c;表示一张画面&#xff0c;如上面的翻页动画书中的一页&#xff0c;就是一帧。一个视频就是由许许多多帧组成的。 帧率 帧率&#xff0c;即单位时间内帧的数量&a…

VS Code开发插件使用 pnpm 打包异常的解决姿势

前言 刚刚准备发一个插件&#xff0c;发现用 pnpm 打出一个本地插件包直接扑街了。 这里只聚焦错误问题的解决&#xff0c;不是发插件的教程。。 聊点背景信息&#xff0c;vscode 的插件命令行的是 vsce 这个模块提供的 cli 能力去做的 环境 pnpm : 8.x 错误截图 本地打…

image with CV

""" 视觉&#xff1a;基本API应用&#xff08;OPENCV&#xff09; """ import cv2 import numpy as np"""图像读取方式3. 1.cv2.imread(filename or path, flags)flags0:灰度图像&#xff1b;flags1表示RGB图像&#xff1b;fl…

Apache Incubator Answer 本地开发部署

文章目录 简介Github文档插件部署 Answer开发环境编译项目初始化项目运行项目 简介 一款适合任何团队的问答平台软件。 Apache Incubator Answer是一个开源项目&#xff0c;它是一个用于构建和部署问答系统的框架。该项目是Apache软件基金会的孵化器项目&#xff0c;提供一个…

iOS 开发中上传 IPA 文件的方法(无需 Mac 电脑)

引言 在 iOS 开发中&#xff0c;将 IPA 文件上传到苹果开发者中心是一个重要的步骤。通常情况下&#xff0c;我们需要使用 Mac 电脑上的 Xcode 或 Application Loader 工具来完成这个任务。然而&#xff0c;如果你没有 Mac 电脑&#xff0c;也没有关系&#xff0c;本文将介绍一…

【图论】Leetcode 994. 腐烂的橘子【中等】

腐烂的橘子 在给定的 m x n 网格 grid 中&#xff0c;每个单元格可以有以下三个值之一&#xff1a; 值 0 代表空单元格&#xff1b;值 1 代表新鲜橘子&#xff1b;值 2 代表腐烂的橘子。 每分钟&#xff0c;腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。 返回 直到单…

运营商名称 是如何显示到 手机通知栏上的?

在我们日常使用手机的过程中&#xff0c;经常会在通知栏或设置菜单中看到特定的运营商名称&#xff0c;例如"中国移动"、"中国联通"或"中国电信"等。 那么&#xff0c;这些运营商的名称是如何出现在我们手机上的呢&#xff1f;手机又是如何区分不…

15. 【Android教程】按钮 Button/ImageButton

在前面两章我们讲了 TextView&#xff0c;它是一个纯输出的控件&#xff1b;而 EditText 在 TextView 基础之上加入了简单的输入功能&#xff1b;今天要讲的 Button 是一个和用户互动感很强的控件&#xff0c;从今往后不再是单纯的文本展示&#xff0c;我们可以通过 TextView、…

汽车4S行业的信息化特点与BI建设挑战

汽车行业也是一个非常大的行业&#xff0c;上下游非常广&#xff0c;像主机厂&#xff0c;上游的零配件&#xff0c;下游的汽车流通&#xff0c;汽车流通之后的汽车后市场&#xff0c;整个链条比较长。今天主要讲的是汽车流通&#xff0c;汽车4S集团。一个汽车4S集团下面授权代…

微信小程序使用iconfont

进入iconfont&#xff0c;添加至项目 进入项目&#xff0c;点击生成代码&#xff0c;或更新代码 点击打开样式 复制内容到小程序的style文件夹下 最后引入到app.wxss

C++中的string设计成模板的原因

查看string的文档可以发现&#xff0c;string被设计成模板&#xff0c;为什么这样设计呢&#xff1f; string文档链接&#xff1a;<string> - C Reference (cplusplus.com) 随着计算机的发展&#xff0c;出现了很多编码&#xff08;用于管理字符&#xff09;&#xff0c…

https的配置和使用(以腾讯云为例)

1、注册域名 2、获取证书 3、下载证书 下载下来的证书所有格式 4、在服务器上下载nginx并配置 nginx的配置文件 如下 server {listen 80;listen 443 ssl;server_name delegate.letspiu.net.cn;ssl on; #开启ssl#指定证书位置ssl_certificate /etc/ss…

集成 LlamaIndex 和 Qdrant 相似性搜索以进行患者记录检索

介绍 由于医疗技术、数字健康记录(EHR)和可穿戴健康设备的进步,医疗领域目前正在经历数据的显着激增。有效管理和分析这些复杂多样的数据的能力对于提供定制医疗保健、推进医学研究和改善患者健康结果至关重要。矢量数据库是专门为高效处理和存储多维数据而定制的,作为一系…

Golang | Leetcode Golang题解之第17题电话号码的字母组合

题目&#xff1a; 题解&#xff1a; var phoneMap map[string]string map[string]string{"2": "abc","3": "def","4": "ghi","5": "jkl","6": "mno","7": &…