JavaScript 中的对象方法

news2024/12/27 21:01:49

JavaScript 中的对象方法分为两类:实例方法(直接作用于对象实例)和 静态方法(直接作用于 Object 构造函数)。以下是两类方法的详细列表:

对象的实例方法

这些方法可以通过对象实例调用。

  1. hasOwnProperty(property)

    1. 检查对象是否有指定的自有属性(不包括原型链上的属性)。
    2.  示例:

      const obj = { a: 1 };
      console.log(obj.hasOwnProperty('a')); // true
      console.log(obj.hasOwnProperty('toString')); // false
      
  2.  isPrototypeOf(object)

    1. 检查当前对象是否在指定对象的原型链上。
    2. 示例:
      function A() {}
      const obj = new A();
      console.log(A.prototype.isPrototypeOf(obj)); // true
      
  3. propertyIsEnumerable(property)

    1. 检查指定属性是否是对象的自有属性,且是可枚举的。
    2. 示例:
      const obj = { a: 1 };
      console.log(obj.propertyIsEnumerable('a')); // true
      
  4. toString()

    1. 返回对象的字符串表示。
    2. 示例:
      const obj = {};
      console.log(obj.toString()); // [object Object]
      
  5. valueOf()

    1. 返回对象的原始值(通常是对象本身)。
    2. 示例:
      const obj = { a: 1 };
      console.log(obj.valueOf()); // { a: 1 }
      

Object 的静态方法

这些方法通过 Object 调用。

  1. Object.create(proto[, propertiesObject])

    • 使用指定的原型创建一个新对象。
    • 示例:
      const proto = { greet: () => "hello" };
      const obj = Object.create(proto);
      console.log(obj.greet()); // "hello"
      
  2.  Object.assign(target, ...sources)
    • 将一个或多个源对象的属性复制到目标对象。
    • 示例:
      const target = { a: 1 };
      const source = { b: 2 };
      Object.assign(target, source);
      console.log(target); // { a: 1, b: 2 }
      
  3. Object.keys(obj)

    • 返回对象自身的可枚举属性的键数组。
    • 示例:
      const obj = { a: 1, b: 2 };
      console.log(Object.keys(obj)); // ["a", "b"]
      
  4. Object.values(obj)

    • 返回对象自身的可枚举属性的值数组。
    • 示例:
      const obj = { a: 1, b: 2 };
      console.log(Object.values(obj)); // [1, 2]
      
  5. Object.entries(obj)

    • 返回对象自身的可枚举属性的键值对数组。
    • 示例:
      const obj = { a: 1, b: 2 };
      console.log(Object.entries(obj)); // [["a", 1], ["b", 2]]
      
  6. Object.freeze(obj)

    • 冻结对象,使其不可修改。
    • 示例:
      const obj = { a: 1 };
      Object.freeze(obj);
      obj.a = 2; // 无效
      console.log(obj.a); // 1
      
  7. Object.seal(obj)

    • 密封对象,禁止添加或删除属性,但可以修改已有属性的值。
    • 示例:
      const obj = { a: 1 };
      Object.seal(obj);
      delete obj.a; // 无效
      console.log(obj.a); // 1
      
  8. Object.is(value1, value2)

    • 判断两个值是否严格相等。
    • 示例:
      console.log(Object.is(0, -0)); // false
      console.log(Object.is(NaN, NaN)); // true
      
  9. Object.getPrototypeOf(obj)

    • 获取对象的原型。
    • 示例:
      const obj = {};
      console.log(Object.getPrototypeOf(obj)); // {}
      
  10. Object.setPrototypeOf(obj, prototype)

    • 设置对象的原型。
    • 示例:
      const obj = {};
      const proto = { greet: () => "hello" };
      Object.setPrototypeOf(obj, proto);
      console.log(obj.greet()); // "hello"
      
  11. Object.getOwnPropertyDescriptor(obj, property)

    • 获取指定属性的描述符。
    • 示例:
      const obj = { a: 1 };
      console.log(Object.getOwnPropertyDescriptor(obj, 'a'));
      // { value: 1, writable: true, enumerable: true, configurable: true }
      
  12. Object.getOwnPropertyDescriptors(obj)

    • 获取对象所有属性的描述符。
    • 示例:
      const obj = { a: 1 };
      console.log(Object.getOwnPropertyDescriptors(obj));
      
  13. Object.getOwnPropertyNames(obj)

    • 返回对象自身的所有属性名(包括不可枚举的)。
    • 示例:
      const obj = { a: 1 };
      console.log(Object.getOwnPropertyNames(obj)); // ["a"]
      
  14. Object.getOwnPropertySymbols(obj)

    • 返回对象自身的所有符号属性。
    • 示例:
      const sym = Symbol("a");
      const obj = { [sym]: 1 };
      console.log(Object.getOwnPropertySymbols(obj)); // [Symbol(a)]
      
  15. Object.preventExtensions(obj)

    • 禁止对象扩展(添加新属性)。
    • 示例:
      const obj = { a: 1 };
      Object.preventExtensions(obj);
      obj.b = 2; // 无效
      console.log(obj.b); // undefined
      
  16. Object.isExtensible(obj)

    • 检查对象是否可扩展。
    • 示例:
      const obj = {};
      console.log(Object.isExtensible(obj)); // true
      Object.preventExtensions(obj);
      console.log(Object.isExtensible(obj)); // false
      
  17. Object.isFrozen(obj)

    • 检查对象是否被冻结。
    • 示例:
      const obj = Object.freeze({});
      console.log(Object.isFrozen(obj)); // true
      
  18. Object.isSealed(obj)

    • 检查对象是否被密封。
    • 示例:
      const obj = Object.seal({});
      console.log(Object.isSealed(obj)); // true
      


总结

  • 实例方法hasOwnPropertyisPrototypeOfpropertyIsEnumerabletoStringvalueOf
  • 静态方法createassignfreezesealisgetPrototypeOfsetPrototypeOf 等。

这些方法可以帮助你更灵活地操作和管理对象!

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

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

相关文章

CAN201 Introduction to Networking(计算机网络)Pt.2 传输层

文章目录 3. Transport Layer(传输层)3.1 Multiplexing and demultiplexing(多路复用和多路分解)3.2 Connectionless transport:UDP3.3 Principles of reliable data transfer3.4 Pipelined communication3.5 TCP: con…

linux系统上SQLPLUS的重“大”发现

SQL plus版本: [oraclepg-xc2 ~]$ sqlplus -v SQL*Plus: Release 19.0.0.0.0 - Production Version 19.3.0.0.0 操作系统:CentOS Linux 7 (Core) 数据库:Oracle 19c Version 19.3.0.0.0 同样的SQL脚本在windos CMD sqlplus 执行没问题。…

Unity中实现人物残影效果

今天火柴人联盟3公测了,看到一个残影的效果,很有意思,上网查询了一下实现方式, 实现思路: 将角色的网格复制出来,然后放置到新建的物体的MeshFilter组件上,每隔几十毫秒在玩家的位置生成一个&a…

mysql mmm和mha对比

本文简单介绍MySQL的两个high availability方案,MMM和MHA。 MMM MMM(Master-Master replication managerfor Mysql)的基本组成如下, 主节点master1:承载写流量备主节点master2:replicate主节点master1的写流量,在主节…

探秘“香水的 ChatGPT”:AI 开启嗅觉奇幻之旅!

你没有看错,AI也能闻到味道了!这是一家名为Osmo公司公布的信息,他们成功创造出了由AI生成的李子味道,快跟着小编一探究竟吧~ 【图片来源于网络,侵删】 Osmo公司的这项技术,通过分析香味的化学成分和人类嗅…

uniapp实现为微信小程序扫一扫的功能

引言 随着微信小程序的快速发展,越来越多的开发者开始关注和学习微信小程序的开发。其中,微信小程序的扫一扫功能是非常常用且实用的功能之一。通过扫描二维码,用户可以获取到相关的信息或者实现特定的功能。 正文 在过去,开发者需要使用微信开发者工具以及相关的开发文档…

网络ip地址改成什么比较好

在数字化时代,网络IP地址作为设备在网络中的唯一标识,扮演着至关重要的角色。然而,随着网络环境的日益复杂和网络安全问题的频发,许多用户开始考虑更改自己的网络IP地址,以期获得更好的网络体验和安全保障。那么&#…

iOS从Matter的设备认证证书中获取VID和PID

设备认证证书也叫 DAC, 相当于每个已经认证的设备的标识。包含了 VID 和 PID. VID: Vendor ID ,标识厂商 PID: Product ID, 标识设备的 根据 Matter 对于设备证书的规定,DAC证书subject应该包含VID 和 PID. 可通过解析 X509 证书读取subject…

聊一聊 C#线程池 的线程动态注入

提高注入速度的两种方法 1. 降低GateThread的延迟时间 上一篇跟大家聊过 Result 默认情况下GateThread每秒会注入4个,底层逻辑是由 Blocking.MaxDelayMs250ms 变量控制的,言外之意就是能不能减少这个变量的值呢?当然可以的,这里我…

【嵌入式C语言】指针数组结构体

指针与数组 指针与数组指针数组数组指针 多维数组数组名的保存 结构体定义结构体定义结构体变量使用typedef简化结构体声明访问结构体成员结构体内存分配字节对齐位域定义位域位域的限制示例 指针与数组 指针数组和数组指针是两个不同的概念,它们涉及到指针和数组的…

HarmonyOS NEXT 实战之元服务:静态案例效果(二)

背景: 前几篇学习了元服务,后面几期就让我们开发简单的元服务吧,里面丰富的内容大家自己加,本期案例 仅供参考 先上本期效果图 ,里面图片自行替换 效果图代码案例如下: Index里面实现 import { authent…

Android Studio超级详细讲解下载、安装配置教程(建议收藏)

博主介绍:✌专注于前后端、机器学习、人工智能应用领域开发的优质创作者、秉着互联网精神开源贡献精神,答疑解惑、坚持优质作品共享。本人是掘金/腾讯云/阿里云等平台优质作者、擅长前后端项目开发和毕业项目实战,深受全网粉丝喜爱与支持✌有…

从安全角度看 SEH 和 VEH

从安全角度看 SEH 和 VEH 异常处理程序是处理程序中不可预见的错误的基本方法之一 https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/exceptions/ SEH——结构化异常处理程序 就其工作方式而言,异常处理程序与其他处理程序相比相当基础&#xff0…

运行Zr.Admin项目(前端)

1.确认环境信息 我这里装的是node16.17版本的 官网16版本的最新为v16.20.2,下载链接https://nodejs.org/dist/v16.20.2/node-v16.20.2-x64.msi 2.去掉ssl 进入到Zr.Admin项目根目录,进入到ZR.vue 打开package.json 文件,删除启动命令配置中…

uniapp登录

第一步整登录 先整个appid APPID和APPSecret https://developers.weixin.qq.com/community/develop/article/doc/000ca4601b8f70e379febac985b413 一个账号只能整一个小程序 正确流程 调用uni.login https://juejin.cn/post/7126553599445827621 https://www.jb51.net/a…

esp32学习:用虫洞ESP32S3-EYE开发板快速实现USB摄像头(UVC免驱)

直接上干货:实现一个USB摄像头,免驱UVC设备。 硬件准备: 乐官方推荐的Cam开发板就是乐鑫带摄像头OV2604的esp32-s3-eye,我们虫洞esp32-s3-eye完全兼容这个板子哦,虫洞ESP32-S3-EYE 人脸识别 esp-cam升级 OpenCV LVGL …

CMake 构建项目并整理头文件和库文件

本文将介绍如何使用 CMake 构建项目、编译生成库文件,并将头文件和库文件整理到统一的目录中以便在其他项目中使用。 1. 项目结构 假设我们正在构建一个名为 rttr 的开源库,初始的项目结构如下: D:\WorkCode\Demo\rttr-master\|- src\ …

磁盘结构、访问时间、调度算法

目录 一、什么是磁盘? 二、磁盘分类 1、从磁头分 2、通过盘面分 三、一次磁盘读/写的时间 四、磁盘调度算法 1、先来先到服务算法FCFS 2、最短寻找时间优先SSTF 3、扫描算法(SCAN) 4、LOOk算法 5、循环扫描算法(C-SCAN…

重生之我在异世界学编程之C语言:深入预处理篇(上)

大家好,这里是小编的博客频道 小编的博客:就爱学编程 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!! 本文目录 引言正文一、预处理的作用与流程&#xf…

Github——网页版上传文件夹

第一步:创建一个新的仓库或进入已存在的仓库页面 第二步:点进对应的文件夹下,然后 点击 “Upload files” 第三步:将文件夹拖拽到上传区域 打开资源管理器,将要上传的文件夹从计算机中拖拽到上传区域。 注意&#xf…