网站建设基本模板介绍百度电话号码查询
web/
2025/9/29 0:06:27/
文章来源:
网站建设基本模板介绍,百度电话号码查询,无锡房地产开发公司,wordpress 信息库插件数据类型
数据类型
在JavaScript中#xff0c;数据类型有两大类。一类是基本数据类型#xff0c;一类是引用数据类型。
基本数据类型有六种#xff1a;number、string、boolean、null、undefined、symbol。
基本数据类型存放在栈中。存放在栈中的数据具有数据大小确定数据类型有两大类。一类是基本数据类型一类是引用数据类型。
基本数据类型有六种number、string、boolean、null、undefined、symbol。
基本数据类型存放在栈中。存放在栈中的数据具有数据大小确定内存空间大小可以分配、直接按值存放的特点。所以存放在栈中的数据可以直接访问。在JavaScript中基本数据类型的值是直接存放在变量访问的地方而且是按值存储。基本的数据类型值是不可更改的。我们在修改字符串或其他基本数据类型变量时实际上是返回了一个新的值而不是【改变】原始值。
而对于引用数据类型Object、Array是存放在堆内存中。引用数据类型的变量并不是存放的实际值而是一个存放在栈内存的指针该指针指向堆内存中的某个地址。每个数据所占的空间大小不一致需要根据情况进行特定的分配。与基本数据类型不同引用类型的值是可以改变的。在JS中引用数据类型的变量是存储在 内存中的对象变量本身存储的是 该对象的引用内存地址。 赋值
对于基本数据类型来说当我们进行赋值操作时实际上是在内存中新开一段栈内存然后再将值赋值到新的栈中。——传值且两者之间互不影响 对于基本数据类型来说赋值操作是给了一个全新的栈所以a、b之间后续是互不影响的。 然而对于引用数据类型来说赋值操作实际上是把变量的地址传给了另一个变量所以称为传址。传址之后两个变量就指向同一个地址两者的操作是互有影响的。
例 深浅拷贝
注意对于基本数据类型深浅拷贝没有区别
对于引用数据类型才存在深浅拷贝之分
浅拷贝
浅拷贝就是指创建一个新对象该对象拥有原始对象第一层属性的精确拷贝。如果原始对象还嵌套了其他对象浅拷贝是不会拷贝的。
即如果原始对象的属性是基本类型数据则拷贝的就是基本数据类型的值如果原始对象的属性是引用类型则拷贝的是内存地址。
注意当原始对象的引用类型属性发生改变时拷贝对象的对应属性值也会发生变化。
这里需要强调一下浅拷贝与赋值是有所区别的赋值时与原数据指向同一对象而浅拷贝则指向了不同对象。
在JavaScript中存在浅拷贝的现象有
· 利用Object对象自带的一些方法例如Object.assign
· Array.prototype.slice(), Array.prototype.concat()
· 使用拓展运算符…实现的复制 深拷贝
浅拷贝是对原始对象第一层属性的精确拷贝而深拷贝则是对原始对象所有层级属性的递归精确拷贝。
浅拷贝应用于需要对进程进行快照、复位或操作的情景 深拷贝适用于需要在副本中做出更改而不影响原始对象的情况。
深拷贝开辟一个新的栈两个对象的属性完全相同但是对应两个不同的地址修改一个对象的属性不会改变另一个对象的属性。在拷贝对象的时候创建一个新的对象并将原始对象的所有属性和嵌套对象等数据复制到新对象中而不是对原始对象的引用进行复制。
实现方法
1使用JSON方法实现深拷贝。先利用JSON.stringfy()要深拷贝的对象转换成JSON格式的字符串然后再使用JSON.parse()把JSON字符串转换成新的对象但是该方法存在一些局限性。比如它们无法处理特殊的对象类型如Date无法处理循环引用也无法处理对象属性中的函数。 2如果出现了JSON方法无法深拷贝的对象可以使用第三方库来实现比如Lodash和jQuery等这些库内部都实现了深拷贝方法 总结
对于引用数据类型即对象Object来说 这里最迷惑的点之一就是要注意
· 如果一个变量是Object类型且它的第一层数据为基本数据类型的时候你用浅拷贝那么拷贝后再去改变拷贝对象是不会影响原数据的如果用赋值就会影响。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/83594.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!