function isPrimitive(value) {
return typeof value === 'string' ||
typeof value === 'number' ||
typeof value === 'boolean' ||
typeof value === 'symbol';
}
有些人将value ===null和typeof value === undefined也并入该方法中,其实这是不对的,这两种数据类型属于特殊数据类型。在开发中,如果有这两种类型的值,我们都是要进行throw error,而不是去包容。
JS中,typeof主要是用来查看数据属于原始类型。 Vue中
shared/util.js
有一个判断是否是原始类型的方法:进入主题:
function
实际上是object
的一个子类型,更深点说,函数是一个可以被调用的对象。(参考:你不知道的JS-中卷)。函数本质上就是对象,只不过与普通的对象相比,它在内部实现了一个
[[call]]
方法,用来表示该对象可以被调用。typeof
来判断一个对象时,如果发现内部包含了[[call]]
方法,就会返回function
。