JavaScript 中 Object

admin3周前 (05-09)it知识70

一、Object 基本概念

JavaScript 的 Object 是存储键值对(属性和方法)的集合,所有对象(如 Array、Function 等)均继承自 Object.prototype
属性名可以是字符串或 Symbol,值可以是任何数据类型(包括其他对象或函数)

二、创建对象的方式

  1. 字面量创建‌(最常用):

let obj = { name: "John", age: 30 };

      构造函数创建‌:

let obj = new Object();
obj.name = "John";

Object.create()‌(基于原型创建):

let parent = { type: "Parent" };
let child = Object.create(parent); 
console.log(child.type); // "Parent" :ml-citation{ref="3,7" data="citationList"}

三、常用静态方法

方法作用示例
Object.assign()合并对象(浅拷贝)let newObj = Object.assign({}, obj1, obj2); 
Object.keys()返回对象自身可枚举属性名数组Object.keys({a:1, b:2}); // ["a", "b"] 
Object.values()返回对象自身可枚举属性值数组Object.values({a:1, b:2}); // [1, 2] 
Object.entries()返回键值对数组Object.entries({a:1}); // [["a",1]] 
Object.freeze()冻结对象(禁止增删改属性)Object.freeze(obj);

四、实例方法与特性

  1. 属性操作‌:

obj.prop = "value";        // 添加属性
obj["prop"] = "value";     // 动态属性名
delete obj.prop;           // 删除属性 :ml-citation{ref="7" data="citationList"}


‌     检测属性‌:

obj.hasOwnProperty("prop");    // 是否自身属性(非继承) :ml-citation{ref="8" data="citationList"}
"prop" in obj;                 // 是否存在于原型链 :ml-citation{ref="8" data="citationList"}
  1. 原型链问题‌:

    • 所有对象默认继承 Object.prototype,可能导致原型污染(如通过 __proto__

    • 安全实践:避免直接操作 __proto__,使用 Object.create(null) 创建无原型对象。

五、遍历对象

  1. for...in 循环‌:遍历对象及其原型链的可枚举属性,需配合 hasOwnProperty 过滤:

for (const key in obj) {
  if (obj.hasOwnProperty(key)) {
    console.log(key, obj[key]); 
  }
} :ml-citation{ref="1,7" data="citationList"}


      Object.keys() + forEach‌:仅遍历自身属性:

Object.keys(obj).forEach(key => {
  console.log(key, obj[key]);
}); :ml-citation{ref="7" data="citationList"}


六、注意事项

  1. 引用类型特性‌:
    Object 作为引用类型,赋值传递的是地址,修改会同步到所有引用该对象的变量

  2. 与 Map 的对比‌:

    • Object 的键只能是字符串或 Symbol,Map 支持任意类型键(如对象、函数)

    • Map 直接提供 size 属性和迭代方法,更适合频繁增删键值对的场景

// 创建对象
const user = {
  name: "Alice",
  greet() {
    console.log(`Hello, ${this.name}!`);
  }
};
// 合并对象
const details = { age: 25 };
const merged = Object.assign({}, user, details); // {name: "Alice", age:25} :ml-citation{ref="1" data="citationList"}
// 遍历属性
Object.entries(merged).forEach(([key, val]) => {
  console.log(`${key}: ${val}`); // "name: Alice", "age: 25"
});



标签: 分享IT知识

相关文章

技术与艺术的融合:创造无比魅力的结合

在人类文明的发展史上,技术与艺术如同一对形影不离的伙伴,共同推动了人类社会的进步。随着科技的飞速发展,技术与艺术的融合愈发紧密,为我们揭示了一个全新的视角,让我们重新审视这两股强大的力量。在当今数字化...

享受工作:找到事业与生活的平衡点

工作是我们日常生活中不可或缺的一部分。我们花费大量的时间和精力在工作中,因此,如何享受工作并找到事业与生活的平衡点就显得尤为重要。在这篇文章中,我们将探讨如何享受工作,让事业和生活愉快并行。首先,了解...

湖边

湖边,一片静谧的美好。清晨的阳光洒在湖面上,波光粼粼,让人心旷神怡。湖上的荷叶轻轻摇曳,荷花争奇斗艳,仿佛在向人们展示着它们的美丽。湖边的柳树依依,芦苇丛生,形成了一道道天然的屏障,让人感到一种隐秘的...

敏捷开发

敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可...

如何学习 javascript

学习JavaScript需要以下步骤:基础语法:学习JavaScript的基础语法,包括变量、数据类型、函数、循环、条件语句等。DOM 操作:学习如何操作 DOM,例如获取和修改元素、添加和删除事件处...

如何高效学习

努力和技巧的能力。以下是一些可以帮助你高效学习的方法:制定学习计划:制定一个清晰的学习计划,包括学习内容和时间表,有助于你更好地组织自己的学习并提高学习效率。创造良好的学习环境:在学习时,尽可能避免干...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。