大数跨境

JavaScript 中处理对象的终极指南

JavaScript 中处理对象的终极指南 索引目录
2025-03-17
3
导读:今天我将讨论 JavaScript 中的一个重要概念,该概念几乎在每个地方和每个项目中都使用,即“对象”。

今天我将讨论 JavaScript 中的一个重要概念,该概念几乎在每个地方和每个项目中都使用,即“对象”。
对象是 JavaScript 的支柱,为从简单的数据结构到复杂的应用程序的一切提供支持。无论您是初学者还是经验丰富的开发人员,掌握如何有效地创建、修改和操作对象都可以显著改善您的代码。在本指南中,我们将分解 JavaScript 对象,以帮助您编写更清晰、更优化的代码。

目录

  • 创建对象

  • 访问对象属性

  • 修改对象属性

  • 检查属性

  • 迭代对象

  • 复制和克隆对象

  • 合并对象

  • 冷冻和密封物体

  • 转换对象

  • 高级对象处理

    • 对象解构

    • 对象方法

    • 对象原型



1. 创建对象

JavaScript 允许你以不同的方式创建对象。最常用的方法是对象字面量new Object()语法。

// 1. Creating objects
// Using Object Literal
const programming = {
language: "Javascript",
extension: ".js",
usedFor: "Web development and backend"
};
scrib.show("Using object literal - ",programming)

// Using new Object()
const programmingObject = new Object();
programmingObject.language = "Python";
programmingObject.extension = ".py";
programmingObject.usedFor = "Web development and AI/ML";

scrib.show("Using new Object - ",programmingObject)


2.访问对象属性

您可以使用点符号括号符号访问对象属性。

// 2. Accessing properties
const programming = {
language: "Javascript",
extension: ".js",
usedFor: "Web development and backend"
};

// Dot Notation
scrib.show("Using dot notation - ",programming.language); // "Javascript"

// Bracket Notation
scrib.show("Using bracket notation - ",programming["extension"]); // .js

// Bracket Notation with spaces
scrib.show("Using bracket notation with key with spaces - ",programming["Used with"]); // HTML and CSS


3.修改对象属性

您可以使用赋值()来更新对象的属性=

// 3. Modifying properties
const programming = {
language: "Javascript",
extension: ".js",
usedFor: "Web development and backend"
};

// Updating properties
programming.language = "Python";

// Adding new properties
programming["Used with"] = "HTML and CSS";

scrib.show(programming);
// { "language": "Python", "extension": ".js", "usedFor": "Web development and backend", "Used with": "HTML and CSS" }


4. 检查属性

使用in运算符hasOwnProperty()检查属性是否存在。

// 4. Checking properties
const programming = {
language: "Javascript",
extension: ".js",
usedFor: "Web development and backend"
};

// Using "in" operator
scrib.show("'language' in programming?", "language" in programming); // true
scrib.show("'Used for' in programming?", "Used for" in programming); // false

// Using hasOwnProperty()
scrib.show("'extension' in programming?",programming.hasOwnProperty("extension")); // true


5. 迭代对象

使用for...infor...of循环遍历对象的属性。

// 5. iterating objects
const programming = {
language: "Javascript",
extension: ".js",
usedFor: "Web development and backend"
};

// looping over the object directly
for (let key in programming) {
scrib.show(`${key}: ${programming[key]}`);
}

const keys = Object.keys(programming);
const values = Object.values(programming);
const entries = Object.entries(programming);

// Iterating keys
for (let key of keys) {
scrib.show(`key: ${key}`);
}

// Iterating values
for (let value of values) {
scrib.show(`Value: ${value}`);
}

// Iterating entries with key and value both
for (let [key, value] of entries) {
scrib.show(`Key: ${key},Value: ${value}`);
}


6. 复制和克隆对象

  • 通过创建副本来避免修改原始对象。

  • 对于深度复制(嵌套对象),使用structuredClone()(现代浏览器)或JSON.parse(JSON.stringify(obj))

// 6. Copying and cloning objects
const programming1 = {
language: "Javascript",
extension: ".js",
usedFor: "Web development and backend"
};

const programming2 = {
language: "Python",
extension: ".py",
usedFor: "Web development and AI/ML",
libraries: [{
name:"pytorch"
},{
name:"numpy"
}]
};

// Shallow Copy using Object.assign()
const copying1 = Object.assign({}, programming1);
scrib.show(copying1);

// Shallow Copy using Spread Operator
const copying2 = { ...programming1 };
scrib.show(copying2);

// for deep copies, using structuredClone
const deepCopy = structuredClone(programming2);
scrib.show(deepCopy);


7. 合并对象

使用Object.assign()或扩展运算符来合并对象。

// 7. Merging objects
const programming = {
language: "Javascript",
extension: ".js",
usedFor: "Web development and backend"
};

const concepts = {
concepts: "Arrays, Objects, Functions, Fetch, Classes"
};

// Using Object.assign()
const merged1 = Object.assign({}, programming, concepts);
scrib.show(merged1)

// Using Spread Operator
const merged2 = { ...programming, ...concepts };
scrib.show(merged1)


8. 冷冻和密封物体

  • 用于Object.freeze()使对象变得不可变

  • 用于Object.seal()允许修改阻止添加/删除属性

// 8. Freezing
const programming = {
language: "Javascript",
extension: ".js",
usedFor: "Web development and backend"
};

// freezing
Object.freeze(programming);
programming.language = "Python"; // Won't change
scrib.show(programming); // { "language": "Javascript", "extension": ".js", "usedFor": "Web development and backend" }
// 8. Sealing
const programming = {
language: "Javascript",
extension: ".js",
usedFor: "Web development and backend"
};

Object.seal(programming);
programming["Used for"] = "Web development and backend" // Adding/removing not Allowed
programming.language = "Python" // Updating Allowed
scrib.show(programming);


9. 转换对象

将对象转换为数组JSON 字符串

// 9. Converting objects
const programming = {
language: "Javascript",
extension: ".js",
usedFor: "Web development and backend"
};

// Convert Object to JSON
const jsonString = JSON.stringify(programming);
scrib.show(jsonString); // {"language":"Javascript","extension":".js","usedFor":"Web development and backend"}

// Convert Object to arrays
const jsonArray = Object.entries(programming);
scrib.show(jsonArray); // [ [ "language", "Javascript" ], [ "extension", ".js" ], [ "usedFor", "Web development and backend" ]]


10. 高级对象处理


使用对象解构

const user = { name: "Jake", age: 26, job: "Engineer" };
const { name, age } = user;
console.log(name, age); // "Jake", 26


使用对象方法

const person = {
name: "Emma",
greet() {
console.log(`Hello, my name is ${this.name}`);
}
};
person.greet();


使用对象原型

JavaScript 对象从其原型继承属性。

// Object prototype
function Programming(language, extension,usedFor) {
this.language = language;
this.extension = extension;
this.usedFor = usedFor;
}

Programming.prototype.fetchDoc = () => "Doc is fetched for javascript";

const javascript = new Programming("Javascript", ".js","Web development and backend");
javascript.fetchDoc(); // Doc is fetched for javascript

结论

在 JavaScript 中,高效处理对象至关重要。无论您是创建、修改、迭代还是合并对象,掌握这些技术都可以帮助您编写更简洁、更优化的代码。


【声明】内容源于网络
0
0
索引目录
索引目录是一家专注于医疗、技术开发、物联网应用等领域的创新型公司。我们致力于为客户提供高质量的服务和解决方案,推动技术与行业发展。
内容 444
粉丝 0
索引目录 索引目录是一家专注于医疗、技术开发、物联网应用等领域的创新型公司。我们致力于为客户提供高质量的服务和解决方案,推动技术与行业发展。
总阅读1.3k
粉丝0
内容444