文章目录

  • 前言
  • 一、原始值与引用值
  • 1.1.基本用法
  • 1.2.类型确定
  • 1.3.基本包装类型
  • 总结


前言

此系列文章用于记录小萌新的ES6的学习经历如有什么错误或者不好的地方请各位大佬多多指教



一、原始值与引用值

1.1.基本用法



原始值:主要指的是单一的一个数据如:'abc' true 20等这种一般的值;

  • 在ES中一共有六种原始值:Undefined、Null、Boolean、Number、String和Symbol。

引用值:主要是若干个原始值或者引用值所组成的对象;

  • ES规定我们不能直接访问对象的存储空间;
  • 实际操作对象时,访问的是保存对象的内存地址,即该对象的引用。

代码如下(示例):

{
	let person1 = "小明";
	person1.sex = "男";
    console.log(person1); // 小明
    console.log(person1.sex); // undefined
	
	let person2 = new Object();
	person2.name = "小芳";
	person2.speak = function () {
  		console.log("你好,我是" + this.name); // 你好,我是小芳
	};
}
  • 原始值不可以创建属性和方法,而引用值可以

1.2.类型确定

如果我们想查看原始值的具体类型可以使用typeof()方法进行辨别

当然引用值也可以使用这个方法但是所有的引用值的类型都是Object,所以使用typeof()的意义并不大可以使用instanceof关键字来确定该引用值是不是某个构造函数的实例。

代码如下(示例):

{
    let a = 'haha';
    console.log(typeof(a)); // string

    let b = new Object();
    let c = [1, 2, 3];
    console.log(b instanceof Object); // true
    console.log(c instanceof Array); // true
}

1.3.基本包装类型

为了让用户更方便是用各个引用对象中的一系列方法,ES提供了三种特殊的引用类型:Boolean、Number和String。

每当用到某个原始值的方法或属性时,后台会创建一个相应的原始值包装类型的对象,从而暴露出操作原始值的各种方法。

{
	let a = "123456789";
	let b = a.substr(0, 5); // 12345
}

后台执行步骤:

  1. 创建一个包含了原始值的String类型的实例;
  2. 调用实例上的特定方法;
  3. 销毁该实例;

所以我们在使用原始值的时候也可以使用包装类型的各种方法。


总结

本文简单介绍了ES的原始值和引用值的一些基本用法和小特性。