本系列文章是针对前端面试之道网站所做的个人注解。
本文是1.1 JS-内置类型的简化记忆版,为面试问答题的形式,如有不解,请移步原文。
1. 问:js的数据类型都有哪些?
答: js有七种内置类型,分为两类,基本类型和引用类型。基本类型有:Number、String、Boolean、Null、Undefined、Symbol;引用类型是Object。
2. 问:你了解Symbol吗?请介绍一下。
答:
symbol是ES6引入的一种新的数据类型,表示独一无二的值。最大的用法是用来定义对象的唯一的属性名,防止一个对象由多个模块构成时,某个键被不小心修改或覆盖。
3. 问:请写出一个对象,其中一个键类型为Symbol。
**答:**为对象的Symbol属性名赋值时,要用“[ ]”赋值,查看属性值也要用“[ ] ”查看。
let mySymbol = Symbol();
let a = {
[mySymbol]: 'Hello!'
};
4. 问:Symbol类型的属性是否是私有属性?
答:此属性是公有属性,不是私有属性(#开头),可以在类外部访问。但是不会出现在for in 、 for of 循环中,也不会被Object.keys()、Object.getOwnPropertyNames()返回。可以通过Object.getOwnPropertySymbols()和Reflect.ownKeys取到。
5. 问:你知道Symbol常用的几种方法吗?
答:Symbol有两个常用的内置方法:Symbol.for()会在全局搜索被登记的 Symbol 中是否有该字符串参数作为名称的 Symbol 值,如果有即返回该 Symbol 值,若没有则新建并返回一个以该字符串参数为名称的 Symbol 值,并登记在全局环境中供搜索;Symbol.keyFor() 返回一个已登记的 Symbol 类型值的 key(需全局环境) ,用来检测该字符串参数作为名称的 Symbol 值是否已被登记。