2016 - 2024

感恩一路有你

怎么将字符串转换成枚举 什么是枚举表达式?

浏览量:3150 时间:2023-04-03 08:45:13 作者:采采

什么是枚举表达式?

枚举是四种基本数据类型之一。

常数、字符和布尔可以用来表示数字、字符和真理的描述。

但是,我们还是觉得有点欠缺:他们可以 不方便描述一些标识符,比如七种颜色:红、橙、黄、绿、青、蓝、紫。我们认为很难用数据类型直接表达它们。

而计算机中有没有这样的数据类型,可以很容易的表达出来?

可以,枚举就可以。用四种基本数据类型表示标识符是不方便的,而且这些标识符的数量是有限的。我们可以通过列举所有要使用的标识符来表达它。这种方法更接近自然语言的表达。

是浅拷贝还是深拷贝?

()方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。

如果目标对象中的属性具有相同的键,则源对象中的属性将覆盖这些属性。下一个源对象的属性同样会覆盖前一个源对象的属性。

方法只将源对象本身的可枚举属性复制到目标对象。这个方法使用源对象的[[Get]]和目标对象的[[Set]],所以会调用相关的getter和setter。因此,它分配属性,而不仅仅是复制或定义新的属性。如果合并源包含getter,这可能会使它不适合将新属性合并到原型中。为了将属性定义(包括其可枚举性)复制到原型,应该使用()和()。

将复制字符串类型和符号类型的属性。

如果出现错误,例如,如果属性不可写,将会引发TypeError,如果在引发错误之前添加了任何属性,则可以更改目标对象。

当这些源对象的值为或时,不会引发错误。

对于深度复制,需要使用其他方法,因为()会复制属性值。如果源对象的属性值是对一个对象的引用,那么它只指向那个引用。也就是说,如果对象的属性值是简单类型(比如string,number),则由({},srcObj)得到的新对象是;如果属性值是一个对象或其他引用类型,那么对于这个对象来说实际上是真的。

深度复制的几种实现方法

使用将对象转换为字符串,然后使用将字符串转换为新的对象。

该方法只能用于可以转换为JSON格式的对象。如果对象包含function或R: 1,b: {f: {g: 1}},c:[1,2,3]} L: 1,b: { f: { g: 1 } },c:[1,2,3]}let obj2 _。clon: { } for(let key in source){ if(source . hasownproperty(key)){ if(type of source[key]!object){ target[key]source[key]} else { target[key]_ deep clone(source[key])} } } else { target source } return target }

更多经典前端面试问题,请访问github或参与讨论。

对象 属性 方法 枚举 key

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。