改变JavaScript对象的rest和spread属性方法js教程

在ES5中,通过使用Lodash的_.extend(target,[sources])(或者其他选项),在ES2015中引入了Object.assign(target,[sources])。

幸运的是,对象的spread语法(ECMAScript第3阶段建议)是如何操作对象,提供了一个简短且易于遵循的语法。

在上面的例子中,...cat将cat对象复制到一个新的dog对象中。.sound属性的值woof放在最后面。

下面对可枚举属性简短的概括,以及如何区分自己与继承属性。这些是理解对象如何spread和rest语法的必要基础。

在JavaScript中,对象是键(key)和值(value)之间的关联。

key的类型通常是string或symbol。值可以是一个基本类型(string、boolean、number、undefined或null),也可以是一个object或function。

下面的对象使用了对象字面符:

属性(property)有几个属性(attribute)来描述值,还有可写的、可枚举的和可配置的状态。有关于这方面更多的细节,请参阅JavaScript中的对象属性。

可枚举属性是一个布尔值,它指的是在枚举对象属性是否可访问。

可以使用Object.keys()来枚举对象属性(有于访问自己的和可枚举的属性)。也可以使用for...in语句(枚举所有可枚举属性),等等。

name和surname是person对象可枚举的属性。

有趣的部分来了。Objectspread从源可枚举属性中克隆过来:

现在我们给person对象创建一个不可枚举的属性age。然后再看看Object的spread行为:

name和surname可枚举属从源对象person复制到clone对象中,但是不可枚举属性age并没有被复制进去。

JavaScript原型可以继承。因此对象属性可是以自己的,也可以是继承的。

接下来创建一个personB对象,并且设置它的属性为person:

Objectspread从自己的源属性中进行复制的时候,会忽略继承的属性。

对象字符符中里的Objectspread可以复制源对象自己的和可枚举的属性,并将其复制到目标对象中。

来看几个示例。下面的对象字面符实例化了一只猫:

同样的规则也适用于对象初始化的规则属性:

现在如果你交换传播对象的相对位置,结果是不同的:

Objectspread的位置和正则性质很重要。这种语法允许实现诸如对象克隆、合并和填充默认值之类的。

下面我们来看看。

使用ObjectSpread语法可以用一个简短而富有表现力的方式来克隆一个对象。下面的例子克隆了bird对象:

虽然克隆对象技术乍一看似乎很简单,但有一些细节的差异还是需要注意的。

ObjectSpread只会做一个对象的浅拷贝。只有对象本身是克隆的,而嵌套的实例不是克隆的。

laptop有一个嵌套的对象screen。如果克隆laptop对象,看看对其嵌套的对象有何影响:

然而,laptop.screen===laptopClone.screen值是true。这意味着,laptop.screen和laptopClone.screen引用相同的嵌套对象,但没有复制。

其实,你可以在任何级别上做传播。只需稍加努力,就可以克隆嵌套的对象:

doomClone是一个普通的JavaScript对象,其原型是Object.prototype,而不是Game.prototype,这是可以预期的。ObjectSpread不保存源对象的原型。

因此,调用doomClone.getMessage()会抛出一个TypeError错误,那是因为doomClone不会继承getMessage()方法。

要修复丢失的原型,需要手动使用__proto__:

不赞成使用__proto__,这里只是用来做演示。

对象传播滞后于调用构造函数创建的实例,因为它不保存原型。其意图是用来浅拷贝源对象自己和可枚举的属性。因此忽略原型的方法似乎也是合理的。

顺便说一下,使用Object.assign()可以更合理的克隆doom:

当一个对象在应用程序的多个地方共用时,直接修改这个对象可能会带来意想不到的副作用。而且跟踪这些修改也是极为蛋疼的事情。

更好的方法是使用操作不可变。不可变能更好的控制对象的修改,有利于编写纯函数。即使在一些复杂的场景中,也更容易确定对象更新的源和原因,因为数据流到一个单一的方向。

ObjectSpread方便以不可变的方式来修改对象。所设你有一个对象描述了一本书的版本信息:

不要忘记,后者会覆盖前者的规则。它给出了合并多个具有相同键对象的理由。

让我们改变一下前面的例子。现在part1和part3具有一个新的属性configuration:

newLine:在行尾添加字符串。默认为

indent:打算的行。默认值为''

multiline()函数几个示例:

使用ObjectSpread会非常简单,可以用默认值填充config对象。在对象字面符中首先展开默认对象,然后是config对象:

...defaultConfig从默认值中提取属性,然后...config配置将会覆盖以前的默认值和自定义属性值。

因此,safeConfig具有multiline()函数可以使用的全部属性。无论输入的配置是否会遗漏一些属性,safeConfig都会具备必要的值。

ObjectSpread能非常直观的使用默认值。

ObjectSpread非常酷的地方在于可以在嵌套对象上使用。当更新一个大对象时,这是一个很好的优势,具有很好的可读性。但还是推荐使用Object.assign()来替代。

下面的box对象定义了box的标签:

通过增加box.size.height使box变高。只需要在嵌套对象上扩展height属性:

...box可以确保biggerBox接收来自box源的属性。

更新嵌套对象box.size的height,只需要额外的一个对象字面量{...box.size,height:200}。这样一来,box.size的height属性就得到了一个新值,其值更新为200。

我喜欢通过一个语句执行多个更新的可能性。

如何将颜色改为黑色,将宽度增加到400,并添加一个新的项目ruler到items中(使用扩展数组)?这很简单:

当扩展undefined、null或原始值时,不会提取任何属性,也不会抛出任何错误。中会返回一个空的对象:

使用结构赋值将对象的属性提取到变量之后,剩余的属性可以被收集到rest对象中。

这就是对象rest属性的好处:

Objectrest只收集自己的和可枚举的属性。

注意,Objectrest必须是结构性赋值中的最后一个元素。因此const{...margin,width}=style将会报错:SyntaxError:Restelementmustbelastelement。

Objectspread有一些规则要记住:

它从源对象中提取自己的和可枚举的属性

扩展的属性具有相同键的,后者会覆盖前者

与此同时,Objectspread是简短而且富有表现力的,同时在嵌套对象上也能很好的工作,同时也保持更新的不变性。它可以轻松的实现对象克隆、合并和填充默认属性。

在结构性赋值中使用Objectrest语法,可以收集剩余的属性。

实际上,Objectrest和Objectspread是JavaScript的重要补充。

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

THE END
1.文旅IP数字化传播与交易新路径——以打虎亭汉墓传播为例在数字化时代,青年或中年阶段的用户是新媒体主流群体,借助新媒体进行的传播,可以使打虎亭汉墓IP的传播对象倾向于年轻一代,年轻一代是主流社群,唯有这些主流社群的认同、接纳和参与,才能为打虎亭汉墓IP的进一步发展奠定基础。因此,要扩大传播的广度,打虎亭汉墓IP的数字化传播就应该首先面向中青年群体,适应中青年群体的...https://www.zzqklm.com/w/wxlw/33243.html
2.聊聊人际传播这个考点如何做笔记的专题进阶版与之相似,互联网时代的人际传播由于媒介技术的尚未能完全复制现实的传播环境,无法还原现实情景中的管理要素,但个体仍可以通过对虚拟身份的调整进行印象整饰,例如设置相应的网名、头像、所使用的聊天文字和符号,塑造出其想要呈现在传播对象面前的形象特征。 情境构建的差异:人际传播社交线索的改变...https://www.360doc.cn/article/75354099_977768036.html
1.传播对象(精选五篇)其次,从传播对象看,需根据不同的划分标准进行分类考虑:若从传播平台角度考虑,选择不同的信息接收平台的受众必然有着不同的期待,内容生产当充分考虑传播平台特征,为传播平台及其受众(用户)“量身定制”信息;若从传播区域角度考虑,应基于相对有限的区域内受众,传播其需要的区域内外的“硬”、“软”信息。也就是说,...https://www.360wenmi.com/f/cnkey1yn7uxs.html
2.传播学教程考研笔记:传播学的对象和基本问题01第一章 传播学的对象和基本问题 摘要 本章主要理清传播学的基本概念,传播是什么?库利认为传播是社会关系赖以生存的机制,强调传播的社会关系,皮尔士认为所有的观念/意义都是通过像(icon)来传播,强调传播的过程是以符合为载体。二者代表了社会学和符号学的观念,且二者最终融合,认为传播是一种社会互动的实质。但该定义...https://www.jianshu.com/p/e9b2b2bf126a?utm_campaign=haruki
3.◇专题2020008◇俄罗斯对外舆论传播的经验与借鉴综述与报告(一)传播者:重点投入,年轻独立,政策宽松 (二)传播内容:突出俄罗斯视角、国际化与本土化结合 (三)传播渠道:借助传统渠道落地,提升新媒体竞争力 (四)传播对象:获取传统受众,吸引年轻网民 (五)传播效果:鼎足而立,引起西方警惕与反制 四、俄罗斯国际传播媒体的传播策略与经验借鉴 ...https://www.fjlib.net/zt/fjstsgjcxx/zbzl/rdzt/202004/t20200414_432091.htm
4.改革开放后俄罗斯文学在中国传播发展的新变化——基于拉斯维尔...摘要:自新中国成立以来,俄罗斯文学在我国的传播发展已走过了60多年艰难曲折的历程。在其整个传播发展过程中,改革开放这一重要历史事件对于俄罗斯文学的传播发展产生了重大影响。文中将以传播学的“5W”模式作为研究视角,从传播主体、传播对象、传播内容、传播手段以及传播效果5个方面,对改革开放前后俄罗斯文学在中国的传播...https://jss.usst.edu.cn/html/2014/2/20140208.htm
5.传媒观察认知传播学,从“认知”和“传播”入手编者按:认知传播学融合了传播学的社会实践经验优势以及认知科学的工具体系支撑,从两个学科的耦合之处探究人们的内在心智活动以及外在行为效应。北京师范大学新闻传播学院教授喻国明和博士生陈雪娇在《传媒观察》2023年第1期刊文,回顾并梳理了近10年认知科学对传播研究的影响,从传播渠道的媒介介质差异,传播对象的人格、内隐...https://www.xhby.net/index/202302/t20230207_7819857.shtml
6.新闻传播学重要人物总结之传播学奠基人霍夫兰Ⅲ传播对象 1、听从性 听从性大的人容易被劝服,决定听从性大小的是对自己的主观评价,自我评价高的人听从性弱,自我评价低的人听从性强。 2、诉诸恐惧(警钟效果) 所谓恐惧诉求,是指在劝服信息中夹杂有威胁性成分,使受众产生惧怕心理,借以达到预期的目的。至于威胁性成分多少和程度如何才是有效的劝服手段存在不同的...https://www.douban.com/note/721961368/
7.人工智能大数据与对外传播的创新发展综合来看,人工智能与大数据的融合创新是相辅相成的,大数据是人工智能的信息来源与发展动力,而人工智能是大数据的解决之道与应用路径。对外传播在全球移动互联网络和国际社交媒体平台的探索与收获,为人工智能与大数据的创新实践提供了可深入优化的传播内容、可丰富化拓展的传播渠道以及可精准化定向的传播对象。 http://www.cahlj.gov.cn/news/newsshow.html?typeid=1148&sid=40183
8.公共关系传播策略研究随着网络、手机、楼宇液晶电视等新兴媒体的出现和发展,传统媒体环境已经发生新的变化,新媒体环境的形成正在对公共关系内涵产生广泛的影响,主要体现在公关传播要素层面的改变:首先,公共关系传播主体、传播对象边界模糊化;其次,传播方式多样化,越来越注重交互性;再次,传播的信息越来越丰富,涉及的内容越来越广泛;最后,传播...https://www.fwsir.com/shangwu/html/shangwu_20190927141858_375043.html
9.深入推进习近平生态文明思想国际传播评论频道着力区分传播对象 推进习近平生态文明思想国际传播,不仅要继续利用国际峰会、国际学术交流等契机加大这一重要思想的传播力度,而且要着眼分众化、差异化、精准化,由“内外有别”走向“外外有别”,针对具体国家、国际机制及国际受众等设置传播议题。其一,根据区域国别开展重点传播。在全球化背景下,面对不同文化背景、不同...https://pinglun.youth.cn/ll/202407/t20240709_15368458.htm
10.新闻报道对象范文6篇(全文)俄国著名戏剧教育家斯坦尼斯拉夫斯基说:“没有对象, 这些话就不可能说得使自己和听的人都相信有实际说出的必要。”民生新闻从诞生伊始, 就定位在说百姓家长里短、道人间喜怒哀乐上, 百姓成为民生新闻的主要受众, 其对象感的存在较为显性。随着社会变化与新闻发展, 民生新闻的传播对象也在发生变化, 显现出以下特征:...https://www.99xueshu.com/w/ikey7aadkkbv.html
11.精英化:大众媒体的传播错位大众传媒把传播对象固定在特定的人群身上,从根本上看是一种传媒的歧视、传播的错位。 由于媒体的倾斜,处于弱势的群体不能够平等享受到信息。而强势人群由于拥有较高的社会地位和良好的教育背景和收入,本来就会比其他人更多地接受信息,这样一来,他们所接受的信息更是远远大于弱势群体,两者之间的鸿沟越来越大。 http://www.wyzxwk.com/e/m/show.php?classid=14&cpage=0&id=218443
12.广告5、商品面向的对象不同形势上有很大的区别 6广告要素编辑 以广告活动的参与者为出发点,广告构成要素有:广告主,广告公司,广告媒体,广告信息,广告思想和技巧,广告受众,广告费用及广告效果。 以大众传播理论为出发点,广告信息传播过程中的广告构成要素主要包括:广告信源、广告信息、广告媒介、广告信宿等要素。 https://baike.sogou.com/v97613.htm
13.2024新闻传播学考研必背考点:新闻传播受众分类(1)核心受众。传播内容和风格针对并满足某些相对比较固定、明确的传播对象。 (2)边缘受众。核心受众群体之外的受众。 以上内容整理于网络,仅供参考! 以上就是学姐为大家整理的【2024新闻传播学考研必背考点:新闻传播受众分类】的全部内容!想了解更多关于考研的相关信息,请关注高顿考研官网查询,祝大家考研成功。 https://www.gaodun.com/kaoyan/1513165.html