lodash源码分析之isSymbol

53 阅读1分钟

本文为lodash源码分析的第6篇,后续会持续更新这个专题,欢迎指正。

依赖

import getTag from './.internal/getTag.js';

源码分析

isSymbol函数主要是用来判断value是否为Symbol类型或者对象。

function isSymbol(value) {
    const type = typeof value;
    return (
        type === 'symbol' ||
        (type === 'object' && value != null && getTag(value) === '[object Symbol]')
    );
}

首先,用 typeof 判断value类型,如果是基础类型 symbol返回true。

其次,如果是Symbol包装器对象,返回true。

补充:如何得到一个Symbol包装器对象?Symbol构造函数并不支持new Symbol()语法,但是可以使用Object()函数创建,如下:

var sym = Symbol(1);
typeof sym; //symbol
var symObj = Object(sym);
typeof symObj; //object