七爪源码:深入的 JavaScript 对象

作为一名 JavaScript 开发人员,您可能意识到我们无法在不处理对象的情况下构建任何大型应用程序。

在 JavaScript 中,一切都是对象。

让我们深入了解 JavaScript 对象。

对象:JavaScript 中的对象只不过是一种非原始类型的数据结构。 我们可以使用花括号定义一个对象,并在其中放置用逗号分隔的键值对。

例如:

const user = { name:”Hemendra”, nickname:”Hemu”, email:”hi@aamchora.space”, city:”bhilwara”}

对对象的 CRUD 操作

创造

let student = {}; // an empty arraystudent.name = “Hemendra Khatik”; //important -> student[“name”]=”Hemendra Khatik” is also validstudent.branch = “CSE”;student.age = 25;console.log(student); // will print the below structure/*{ name:”Hemendra Khatik”, branch:”CSE”, age:25}*/

或一次所有键值

let user = { name:”Hemendra”, nickname:”Hemu”, email:”hi@aamchora.space”, city:”bhilwara”}

读

我们用 。 运算符来访问对象的值。

user.name; // to access the “Hemendra”.user.city; // to access the “bhilwara”.user.username; // will be undefined because it is not present in the user object.

我们还可以使用方括号访问对象的属性。

user[“name”]; // to access the “Hemendra”.user[“city”]; // to access the “bhilwara”.

更新

更新一个对象。

student.age = 21; // now age is changed from 25 to 21

删除

从对象中删除键。

delete student.name; // to delete the name key from student object

其他有用的方法

仅从对象打印键。

const user = { username:”aamchora”, email:”hi@aamchora.space”,};Object.keys(user);/* Above expression returns an array containing keys only from an object [“username”, “email”]*/

仅从对象打印值。

const user = { username:”aamchora”, email:”hi@aamchora.space”,};Object.values(user);/* Above expression returns an array containing values only from an object [“aamchora”, “hi@aamchora.space”]*/

克隆对象

您不能像复制原始类型数据结构一样复制非原始类型数据结构。

例如:非原始类型数据结构。

let a = 10;let b = a;b= b + 1;console.log(a) // 10console.log(b) // 11

例如:原始类型数据结构。

let obj = { a:10;};let obj2 = obj;obj2.a = 12;if(obj === obj2){ console.log(“obj and obj2 are same”);};// above condition will be true console.log(obj) // {a:12}console.log(obj2) // {a:12}

我们可以使用 Object.assign(targetObject, sourceObject) 来克隆一个对象。

const obj = { a: 1 };const obj2 = Object.assign({}, obj);obj2.a = 2;if(obj === obj2){ console.log(“obj and obj2 are same”);}else{ console.log(“obj and obj2 are different”);};// above condition will be false here console.log(obj); // { a: 1 }console.log(obj2); // { a: 2 }

浅拷贝

对象的浅拷贝是一种拷贝,其属性与创建拷贝的源对象共享相同的引用(指向相同的底层值)。

注意:对于浅拷贝,我们使用 Object.assign(targetObject, sourceObject)。

看下面的例子来理解浅拷贝。

const obj = { a:1}const obj2 = { b:2, c:obj // here c’s value is a reference to the other object called obj}const copy = Object.assign({},obj2); // here obj2 is a source object // changing the copied object’s value copy.c.a = 1111;if(copy.c.a === obj.a){ console.log(“obj and obj2 are same”);}// above condition will be true

深拷贝

对象的深层副本是一个副本,其属性不共享与创建副本的源对象相同的引用(指向相同的基础值)。

注意:对于深拷贝,我们使用 JSON.parse(JSON.stringify(sourceObject))。

看下面的例子来理解深拷贝。

const obj = { a:1}const obj2 = { b:2, c:obj // here c’s value is a reference to the other object called obj}const copy = JSON.parse(JSON.stringify(obj2)) // here obj2 is a source object // changing the copied object’s value copy.c.a = 1111;if(copy.c.a === obj.a){ console.log(“obj and obj2 are same”);}else{ console.log(“obj and obj2 are not same”);}// above condition will be false

关注我以获取更多此类博客文章。

关注七爪网,获取更多APP/小程序/网站源码资源!

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
用户投稿
上一篇 2022年6月26日 21:24
下一篇 2022年6月26日 21:24

相关推荐

  • 《宝可梦朱紫》獒教父属性是什么?獒教父属性一览

    宝可梦朱紫里獒教父是一只很强的宝可梦,很多玩家不清楚獒教父的属性是什么样的,下面就给大家带来宝可梦朱紫獒教父属性一览,感兴趣的小伙伴一起来看看吧,希望能帮助到大家。 獒教父属性一览…

    2022年11月25日
  • 《宝可梦朱紫》太晶化强力宝可梦推荐 太晶化哪些宝可梦最强?

    宝可梦朱紫游戏中宝可梦种类繁多,不过有的宝可梦比较强,有的稍弱一些,那么太晶化化哪些宝可梦最强呢,为了便于大家更好的体验游戏,这里给大家带来了宝可梦朱紫太晶化强力宝可梦推荐,一起来…

    2022年11月25日
  • 宝可梦朱紫四大天王属性怎么样 四大天王属性数值介绍

    宝可梦朱紫四大天王属性如何?四大天王的属性数值玩家们还是挺好奇的,想要了解四大天王属性的可以看看下面小编的介绍,小编会把四大天王的属性数值全都分享在下面,各位赶紧来小编这里多了解一…

    2022年11月25日
  • 宝可梦朱紫皮卡丘多少级进化 皮卡丘进化条件攻略

    宝可梦朱紫皮卡丘进化条件是什么?皮卡丘怎么进化?作为最受欢迎的电属性宝可梦,大家都很想知道皮卡丘进化的方法,今天小编这就在下面的攻略中分享皮卡丘进化条件,各位可以赶紧来小编这里了解…

    2022年11月25日
  • 《宝可梦朱紫》四天王属性是什么?四天王属性阵容一览

    宝可梦朱紫中玩家可以挑战四天王,很多玩家想知道宝可梦朱紫四天王属性是什么,有什么阵容?下面就带来宝可梦朱紫四天王属性阵容一览,感兴趣的小伙伴不要错过,希望能帮助到大家。 四天王属性…

    2022年11月24日
  • 宝可梦朱紫皮卡丘怎么进化?宝可梦朱紫皮卡丘进化条件攻略

    宝可梦朱紫皮卡丘进化条件是什么?皮卡丘怎么进化?作为最受欢迎的电属性宝可梦,大家都很想知道皮卡丘进化的方法,今天小编这就在下面的攻略中分享皮卡丘进化条件,各位可以赶紧来小编这里了解…

    2022年11月24日
  • 跳跳犬(跳跳犬阴阳师哪里多)

    本文主要讲的是跳跳犬,以及和跳跳犬阴阳师哪里多相关的知识,如果觉得本文对您有所帮助,不要忘了将本文分享给朋友。 阴阳师跳跳犬哪里多跳跳犬出现地点详解 在阴阳师手游悬赏封印任务中,玩…

    2022年11月24日
  • 《宝可梦朱紫》古剑豹种族值多少?古剑豹属性一览

    宝可梦朱紫中每种宝可梦的种族值都是不一样的,其中很多玩家想知道宝可梦朱紫古剑豹种族值多少,下面就带来宝可梦朱紫古剑豹属性一览,感兴趣的小伙伴一起来看看吧,希望能帮助到大家。 古剑豹…

    2022年11月21日
  • 《宝可梦朱紫》摩托蜥怎么进化?摩托蜥进化方法说明

    宝可梦朱紫中摩托蜥是这作新加入的宝可梦,很多玩家想知道宝可梦朱紫摩托蜥怎么进化,下面就带来宝可梦朱紫摩托蜥进化方法说明,感兴趣的小伙伴一起来看看吧,希望能帮助到大家。 摩托蜥进化方…

    2022年11月21日
  • 魔兽世界外域副本介绍(魔兽世界外域地图)

    第一次开始玩魔兽世界的小伙伴在进入游戏后,会惊叹于游戏地图的巨大,现在魔兽世界开了9.0后,地图总共有多大呢,让我们来研究一下。 魔兽世界每一次大版本更新都会更新一块地图,现地图总…

    2022年11月19日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息