摘要:
到目前为止,ECMAScript 标准中定义了8种数据类型,它们分别是Undefined、Null、Number、Boolean、String、Symbol、BigInt、Object。
为了判断变量的数据类型,JavaScript还提供了typeof操作符。
但typeof操作符错误的将一个原始类型值null判断为object 阅读全文
摘要:
如何判断数据属于哪种类型是JavaScript中非常重要的一个知识点,其中最常用的两个方法就是分别使用typeof与instanceof这两个关键字来对数据的类型进行判断。
typeof与instanceof虽然都可以用来对数据所属的类型进行判断,但是它们之间还是存在差异的,而这种差异主要存在于两个方面:
1.作用点的不同;
typeof主要用来判断基础数据类型,instanceof则是用来判断引用数据类型。
2.底层逻辑的不同;
typeof是根据数据在存储单元中的类型标签来判断数据的类型,instanceof则是根据函数的prototype属性值是否存在于对象的原型链上来判断数据的类型。 阅读全文
摘要:
你知道为什么新建一个不添加任何属性的对象为何能调用toString方法吗?你知道如何让拥有相同构造函数的不同对象都具备相同的行为吗?你知道instanceof关键字判断对象类型的依据是什么吗? 阅读全文
摘要:
JavaScript并不像别的语言,能使用关键字来声明私有变量。
我了解的JavaScript能用来声明私有变量的方式有两种,一种是使用闭包,一种是使用WeakMap。 阅读全文
摘要:
继承是面向对象编程中相当重要的一个概念,它对帮助代码复用起到了很大的作用。
Brendan Eich在创建JavaScript时,没有选择当时最流行的类继承机制,而是借鉴Self,用到了基于原型(prototype)的继承机制,这导致了JavaScript在继承机制方面与Java、C++等基于类继承机制的语言有着显著的区别。
其具体在于—C++的多重继承、Java的继承和接口实现中都包含"类"的概念,它们倾向于在创建对象之前[1]已经规定了对象需要继承的类和实现的接口,并且使用类与类之间的继承方式。
而在JavaScript中没有"类"的概念,在对象之后所继承的对象也是可以发生动态变化的,并且使用的是对象与对象之间的继承方式。 阅读全文