ES6 学习笔记(三)原始值与引用值
总结:
1、原始值,表示单一的数据,如10,“abc”,true等。
1.1、 ES的6种原始值: Undefined、Null、Boolean、Number、String、Symbol
1.2、 保存原始值的变量是按值访问,操作存储在变量内存中的实际值
2、引用值,表示有多个值(原始值或其他引用值)构成的对象
2.1、 ES不允许直接访问对象的内存空间。
2.2、 实际操作对象时,访问的是保存对象的内存地址,即该对象的引用。
3、动态属性
3.1、 原始值是不可改变的。
3.2、 引用值(对象)可以随时添加、修改和删除它的属性和方法。
如:
let person = new Object();
person.name = "小明";
person.sayhello= function () {
console.log("Hello, I'm " + this.name);
};
console.log(person)
运行结果:{ name: '小明', sayhello: [Function (anonymous)] }
3.3、 原始值不能有属性
如:
let one = "小明";
one.age = 20;
console.log(one, one.age);
运行结果:
小明 undefined
4、值传递
4.1、 赋值,即将值复制给变量的过程
4.2、 原始值与引用值本质上没有区别,都是将一个变量中保存的信息复制给另一个变量,如:
let a = 100;
let b = a;
b++;
console.log(a, b);
运行结果:
100 101
let obj1 = { value: 100 };
let obj2 = obj1;
obj2.value = 200;
console.log(obj1.value, obj2.value);
运行结果:
200 200
5、确定类型
5.1、 方法:通过typeof操作符来判断一个值的类型
如:
let a = null;
let b = new Object();
let c = [1, 2, 3];
let d = "abcds";
let e;
let f = 123
let g = true
console.log(typeof a); // object
console.log(typeof b); // object
console.log(typeof c); // object
console.log(typeof d); // string
console.log(typeof e); // undefined
console.log(typeof f); // number
console.log(typeof g); // boolean
5.2、 对于引用值,typeof的意义不大,通常采用instanceof操作符,判断引用值是否为某个构造函数的实例。
如:
let obj = new Object();
let a = [1, 2, 3];
console.log(obj instanceof Object); // true
console.log(a instanceof Array); // true
6、原始值包装类型
为了方便操作原始值,ES提供了3中特殊的引用类型:Boolean、Number和String。每当用到某个原始值的方法或属性时,后台会创建一个相应的原始值包装类型的对象,从而暴露出操作原始值的各种方法。如:
let s1 = "hello world";
let s2 = s1.substr(0, 5);
后台执行步骤:
(1)创建一个包含了原始值的String类型的实例s1;
(2)s2调用s1实例上的substr方法;
(3)销毁s1实例;
ES6 学习笔记(三)原始值与引用值的更多相关文章
- ES6学习笔记<三> 生成器函数与yield
为什么要把这个内容拿出来单独做一篇学习笔记? 生成器函数比较重要,相对不是很容易理解,单独做一篇笔记详细聊一聊生成器函数. 标题为什么是生成器函数与yield? 生成器函数类似其他服务器端语音中的接口 ...
- ES6学习笔记三
1.Symbol ES5 的对象属性名都是字符串,这容易造成属性名的冲突.如果有一种机制,保证每个属性的名字都是独一无二的就好了,这样就从根本上防止属性名的冲突.这就是 ES6 引入Symbol的原因 ...
- ES6学习笔记三:Symbol、Set、Map
一:Symbol ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值.它是 JavaScript 语言的第七种数据类型,前六种是:undefined.null.布尔值(Boolean). ...
- ES6学习笔记(二):引用数据类型
Array 新增方法 1.Array.from() 将类数组(dom对象 或 arguments)或set\map对象转换为数组 2.Array.of() 将一组值转换为数组,例如Array.of(3 ...
- ES6学习笔记(三)——数值的扩展
看到这条条目录有没有感觉很枯燥,觉得自己的工作中还用不到它所以实在没有耐心看下去,我也是最近得闲,逼自己静下心来去学习去总结,只有在别人浮躁的时候你能静下心来去学去看去总结,你才能进步.毕竟作为前端不 ...
- ES6学习笔记三(proxy和reflect)
proxy用法 // 代理 { let obj={ time:'2017-03-11', name:'net', _r: }; let monitor=new Proxy(obj,{ // 拦截对象属 ...
- ES6学习笔记<二>arrow functions 箭头函数、template string、destructuring
接着上一篇的说. arrow functions 箭头函数 => 更便捷的函数声明 document.getElementById("click_1").onclick = ...
- ES6学习笔记<五> Module的操作——import、export、as
import export 这两个家伙对应的就是es6自己的 module功能. 我们之前写的Javascript一直都没有模块化的体系,无法将一个庞大的js工程拆分成一个个功能相对独立但相互依赖的小 ...
- ES6学习笔记<一> let const class extends super
学习参考地址1 学习参考地址2 ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015:也 ...
- ES6学习笔记<四> default、rest、Multi-line Strings
default 参数默认值 在实际开发 有时需要给一些参数默认值. 在ES6之前一般都这么处理参数默认值 function add(val_1,val_2){ val_1 = val_1 || 10; ...
随机推荐
- Downie for Mac最强视频下载工具(支持B站优酷土豆腾讯等)
我搜集到的一款简单拖放链接到Downie,它就会下载该网站上的视频.理论可以下载各种视频网站上的视频! 应用介绍 Downie 是一款Mac平台上的优秀视频下载软件,使用非常简单,只需将下载链接放置D ...
- [CF1526F] Median Queries(交互 / 构造)
题面 这是一道交互题. 有一个未知的长度为 N \tt N N 的排列 P \tt P P,已知 P 1 < P 2 \tt P_1 < P_2 P1<P2 . 每次询问格式为 ...
- CCC3.0 NFC OWNER PAIRING
OWNER PAIRING 本篇只介绍所有操作都成功执行的场景,中间如果出现异常,需要翻看规范决定接下来的操作 一些密钥 公私密钥对(Vehicle.PK&Vehicle.SK) Endpoi ...
- AtCoder Beginner Contest 254(D-E)
Tasks - AtCoder Beginner Contest 254 D - Together Square 题意: 给定一个N,找出所有不超过N的 ( i , j ),使得( i * j )是一 ...
- 一篇文章教你学会ASP.Net Core LINQ基本操作
一篇文章教你学会ASP.Net Core LINQ基本操作 为什么要使用LINQ LINQ中提供了很多集合的扩展方法,配合lambda能简化数据处理. 例如我们想要找出一个IEnumerable< ...
- Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):4、Maven项目转换与pom.xml配置
文章目录: Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):1.JIRA账号注册 Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):2.PGP ...
- 高可用代理服务器实现keepalive+squid
〇.前言 之前单机部署了squid代理服务器,现在实现一下高可用. 还有自定义squid的error页面 准备:两台centos7(1C2GB) 三个可用IP,一主一备一虚拟IP(VIP) 一.安 ...
- 用VBA在PowerPoint中实现日期时间秒级动态显示
'*********************************************************** 使用说明 ********************************** ...
- kafka的auto.offset.reset详解与测试
1. 取值及定义 auto.offset.reset有以下三个可选值: latest (默认) earliest none 三者均有共同定义: 对于同一个消费者组,若已有提交的offset,则从提交的 ...
- 2021年3月-第02阶段-前端基础-Flex 伸缩布局-移动WEB开发_流式布局
移动web开发流式布局 1.0 移动端基础 1.1 浏览器现状 PC端常见浏览器:360浏览器.谷歌浏览器.火狐浏览器.QQ浏览器.百度浏览器.搜狗浏览器.IE浏览器. 移动端常见浏览器:UC浏览器, ...