在JavaScript中引用类型和值类型的区别
一、存储方式不一样
基本数据类型
变量存储的是简单的数据段,存储的是具体的值,是轻量级的数据存储方式
引用类型
引用类型的值,可以由多个值构成的对象,引用类型的变量存储的是对象引用地址。引用类型是重量的数据存储方式,分配在堆内存,频繁创建对象有损性能。
引用类型(N多) Object、Array、Date、Function、……
二、动态属性不一样
1、引用类型能动态添加属性
var person=new Object();
person.name="jack";
person.age=20;
console.log("姓名:%s,年龄:%d",person.name,person.age);
结果
说明
属性动态添加成功
2、值类型不能添加
三、赋值的方式不一样
1、值类型,拷贝变量的内容
值类型,拷贝变量的内容
var num=10;
var num2=num;//创建新的空间,拷贝num的值到num2。
这个两个变量的内容是互不影响的,num2的内容是num的一个副本。类似操作系统的复件
var num=10;
var num2=num;
num2=100;//并不会影响到num的值
console.log("num=%d num2=%d",num,num2);
结果
2、引用类型,拷贝引用地址
var person1=new Object();
person1.age=18;
var person2=person1;//拷贝引用地址,给变量person2,于是同时指向一个对象
person2.age=30;//事实上也是person1指向的那个对象
console.log("person1.age=%d person2.age=%d",person1.age,person2.age);
结果
说明
两个变量都指向同一个对象,对象就是希望被变量引用的,引用的数量也是没有限制的。

在JavaScript中引用类型和值类型的区别的更多相关文章
- C#中引用类型和值类型的区别,分别有哪些
C#的值类型包括:结构体(数值类型,bool型,用户定义的结构体),枚举,可空类型. C#的引用类型包括:数组,用户定义的类.接口.委托,object,字符串. 数组的元素,不管是引用类型还是值类型, ...
- 实际举例C#引用类型和值类型的区别<网摘>
我们都知道,c#的两大数据类型分别为值类型和引用类型.很多人或许闭着眼睛都能说出值类型包括简单类型.结构体类型和枚举类型,引用类型包括自定义类.数组.接口.委托等,但是当被问及到二者之间的联系和区别, ...
- 【转】c#引用类型与值类型的区别大盘点
解析:CLR支持两种类型:值类型和引用类型.用Jeffrey Richter(<CLR via C#>作者)的话来说,“不理解引用类型和值类型区别的程序员将会把代码引入诡异的陷阱和诸多性能 ...
- C#基础知识-引用类型和值类型的区别(六)
在第一篇中我们介绍了C#中基本的15种数据类型,这15种数据类型中又分为两大类,一种是值类型,一种是引用类型.值类型有sbyte.short.long.int.byte.ushort.uint.ulo ...
- C#中引用类型和值类型
C#的值类型包括:结构体(数值类型,bool型,用户定义的结构体),枚举,可空类型. C#的引用类型包括:数组,用户定义的类.接口.委托,object,字符串. 值类型和引用类型的区别在于,值类型的变 ...
- C# 引用类型与值类型的区别
//引用类型(使用了class) class SomeRef{public Int32 x;} //值类型(使用了struct) struct SomeVal{public Int32 x;} sta ...
- C#中引用类型和值类型分别有哪些
- NET基础(4):引用类型和值类型
CLR支持两种类型:引用类型和值类型.虽然FCL的大多数类型都是引用类型,但程序员用的最多的还是引用类型,引用类型总是从托管堆分配,c#的new操作符返回对象内存地址-即指向对象数据的内存地址.使用引 ...
- 《CLR via C#》读书笔记--基元类型、引用类型和值类型
编程语言的基元类型 编译器直接支持的数据类型称为基元类型.基元类型直接映射到Framework类库中存在的类型.例如:C#中的int直接映射到System.Int32类型.下表给出了C#基元类型与对应 ...
随机推荐
- 用ajax写机器人聊天的案例
HTML 中的文档 <body> <h3>简单的Ajax实例</h3> <div class="chatbox"> <!-- ...
- Ubuntu 双网卡route
ip route flush table sz ip route add default via 183.2.218.254 dev eth0 src 183.2.218.4 table sz ip ...
- Java学习01-使用maven插件tomcat搭建web maven项目
我使用社区版的IDEA,社区版的没有tomcat插件,只能使用maven插件进行tomcat的使用了,下面进入正题 一.pom.xml配置tomcat插件 <build> <fina ...
- Web Api 接口测试工具:Swagger
前言:WebApi接口开发完毕后,交付给前端人员或手机端开发者时接口说明文档是必不可少的配套设备,如果公司流程不规范大家使用口口相传的交接方式,而且没有改进的欲望,那你可以到此为止了.Swagger是 ...
- 远程连接工具rdcman
介绍一个远程连接的工具RDCMan.RDCMan全称Remote Desktop Connection Manager(多远程桌面管理)是微软Windows Live体验团队的主要开发者 Julian ...
- 七、设备驱动中的阻塞与非阻塞 IO(二)
7.2 轮询 7.2.1 介绍 在用户程序中的 select() 和 poll() 函数最终会使设备驱动中的 poll() 函数被执行. 设备驱动程序中的轮询函数原型: /** 用于询问设备是否可以非 ...
- webpack多页应用
本文主要讲了webpack怎么搭建多页应用,熟悉下webpack的基本用法. 新建文件夹,目录结构如下: 然后 cd webpack-test npm init(根目录下创建了一个pakage.jso ...
- .NET mocking框架Telerik JustMock发布R2 2019|附下载
Telerik JustMock是一个灵活.功能齐全的.NET mocking框架.Telerik JustMock能够简化单元测试,现在测试复杂的场景比以前更加容易了.同时JustMock还与Vis ...
- ELF程序头部及程序加载
程序头部 程序头部描述与程序执行直接相关的目标文件结构信息.用来在文件中定位各个段的映像.同时包含其他一些用来为程序创建进程映像所必需的信息. 可执行文件或者共享目标文件的程序头部是一个结构数组,每个 ...
- java打分系统
package com.ioTest; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.Fil ...