javascript学习笔记-数据类型
2024-10-21 04:05:18
一 数据类型
基本类型:undefined,null,boolean,number,string 保存在栈内存中 占用空间固定 变量直接从栈内存中存取的是该值
引用类型:array,object,function,regexp 保存在堆内存中 占用空间不固定 变量从栈内存中读取指针,再通过指针在堆内存中访问该值
1.动态属性
不能给基本类型添加属性或方法
2.复制变量值
值类型属于基本类型的变量,复制的是值;值类型属于引用类型的变量,复制的是指针,他们都指向的同一个对象。
赋值对象的时候,实际上复制的是对象的引用(引用指的就是对象的指针),但是为对象添加属性时,则操作的是对象本身
3.参数传递
ECMAScript中所有的函数参数都是按值传递
function setName (obj)
{
obj.name = "Mysic";
} var person = {};
setName(person);
alert(person.name) // Mysic //看似是引用。其实仍然是按值传递。
//这里的值指的是对象在栈内存中保存的指针。 function setName(obj)
{
obj.name = "Mysic";
obj = {};//创建了一个新对象并把指针赋值给obj,那么obj的值保存的是新对象的地址,不再是person所保存的地址
obj.say = "Blabla";//say属性添加到新对象中,并未添加到person所指的对象中
}
var person = {}
setName(person);
alert(person.name) //Mysic
alert(person.say) // undefined //如果是引用传递,那么person应该是指向函数中的新的对象,并存在say属性。实际上并不存在。
//引用传递这里可以理解为传递的是指针的指针,也就是person变量的地址
4. 检测类型
基本类型数据用typeof
引用类型数据用instanceof Object[,Array,RegExp]
最新文章
- Thrift的TJsonProtocol协议分析
- Launch和Shut Off操作详解 - 每天5分钟玩转 OpenStack(30)
- mysql关联表的复制
- 简单通过java的socket&;serversocket以及多线程技术实现多客户端的数据的传输,并将数据写入hbase中
- XAMPP(Linux版-x86兼容)官网下载
- jquery.cxcalendar 插件基本使用
- pickle模块的使用python3
- C语言第十次博客作业--结构体
- EJB_开发EJB容器模型的WEB服务
- 微信小程序http连接访问解决方案
- go_micro相关书签
- [工控安全]“祝融”—一种针对PLC控制系统的欺骗攻击病毒
- 我从Angular 2转向Vue.js, 也没有选择React
- HDU 2459 Maximum repetition substring
- [THUWC2017]在美妙的数学王国中畅游
- 自学Aruba1.4-Aruba体系结构-产品线
- apicloud 环信总结
- TOP100summit:【分享实录】爆炸式增长的斗鱼架构平台的演进
- Java 集合-Map接口和三个子类实现
- HTTP协议 (七) Cookie(转)