1.1 类型断言
类型断言用来手动指定一个值的类型,一般和联合类型一起使用,用来确保对象类型使用正确。
语法为:
<类型>值或者对象
值或者对象 as 类型
let a:string | number = "name";
console.log((<string>a).length); //4
1.2 类型运算符(typeof)
typeof操作符返回一个字符串,可以获取一个变量或者表达式的类型。一般只能返回如下几个结果:number | boolean | string | symbol | function | object | undefined。是用来判断基本类型的。
let声明的变量在声明之前不可用typeof来输出操作符的类型,var可以。由于var声明的变量,会进行变量提升,会输出undefined。
1.3 instanceof运算符
instanceof运算符可用于测试对象是否为指定类型的实例。如果是,返回true,否则返回false。基本语法为:
类实例 instanceof 类;
实质就是:instanceof操作符判断左操作数对象的原型链上是否有右边这个构造函数的prototype属性,也就是说指定对象是否是某个构造函数的实例,最后返回布尔值,这个对整个原型链上的对象都是有效的,由于instanceof对整个原型链上的对象都有效,因此同一个实例对象,可能会对多个构造函数都返回true!
1.4 constructor
constructor属性的作用是,可以得知某个实例对象,到底是哪个构造函数产生的。
本身是prototype对象的一个属性,默认指向prototype属性所在的构造函数,此处我们用来判断数据类型。返回boolean值。
判断数据类型,包括数组、日期、对象等。语法如下:
变量名.conctructor === 数据类型;
举例:
str.constructor === String //true
num.constructor === Number //true
obj.constructor === Object //true
arr.constructor === Array //true
new Date().constructor === Date //true
1.5 Object.propotype.toString
可以通过 toString()
来获取每个对象的类型。为了每个对象都能通过 Object.prototype.toString()
来检测,需要以 Function.prototype.call()
或者 Function.prototype.apply()
的形式来调用,传递要检查的对象作为第一个参数。
1.6 Array.isArray()
判断是否是数组,返回true | false。