1.1简化记忆版 JS-内置类型

246 阅读1分钟

本系列文章是针对前端面试之道网站所做的个人注解。

本文是1.1 JS-内置类型的简化记忆版,为面试问答题的形式,如有不解,请移步原文。

1. 问:js的数据类型都有哪些?

答: js有七种内置类型,分为两类,基本类型和引用类型。基本类型有:NumberStringBooleanNullUndefinedSymbol;引用类型是Object

2. 问:你了解Symbol吗?请介绍一下。

答: symbolES6引入的一种新的数据类型,表示独一无二的值。最大的用法是用来定义对象的唯一的属性名,防止一个对象由多个模块构成时,某个键被不小心修改或覆盖。

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 值是否已被登记。