当前位置: 首页 > article >正文

JavaScript 中的对象方法

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.kler.cn/a/454067.html

相关文章:

  • 通过Js动态控制Bootstrap模态框-弹窗效果
  • uniapp实现APP、小程序与webview页面间通讯
  • 网络智能服务
  • 使用 ffmpeg 拼接合并视频文件
  • Vue.use()和Vue.component()
  • flink-1.16 table sql 消费 kafka 数据,指定时间戳位置消费数据报错:Invalid negative offset 问题解决
  • 人工智能与云计算的结合:如何释放数据的无限潜力?
  • Mono里运行C#脚本4—mono_mutex_t 锁的实现
  • VSCode/Visual Studio Code实现点击方法名跳转到具体方法的
  • C# .Net Web 路由相关配置
  • Android学习19 -- NDK4--共享内存(TODO)
  • 机器学习常用评估Metric(ACC、AUC、ROC)
  • 自動提取API爬蟲代理怎麼實現?
  • Docker环境下数据库持久化与多实例扩展实践指南
  • 再谈ChatGPT降智:已蔓延到全端,附解决方案!
  • docker怎么复制容器的文件到宿主机
  • 基于Spring Boot的电影售票系统
  • OCR(三)windows 环境基于c++的 paddle ocr 编译【CPU版本】
  • flask后端开发(6):模板继承
  • 【C++boost::asio网络编程】有关服务端退出方法的笔记
  • 华为OD E卷(100分)39-最长子字符串的长度(二)
  • SpringBoot + HttpSession 自定义生成sessionId
  • 数据中台从centos升级为国产操作系统后,资源增加字段时,提交报500错误
  • 网页中字体图标Fontawesome的使用
  • linux-22 目录管理(二)rmdir命令,删除目录
  • 白牛招投标数据库介绍