JS中的instanceof和typeof,以及特殊引用类型

时间:2023-03-08 17:54:11

1、instanceof是用于测试对象类型,通常格式为:a instanceof b,返回true或falise,表示为对象a是否是类型b的实例。

typeof则是用于测试基本类型,包括undefined, null, number, boolean, string, object。通常格式为: typeof a,返回a的类型。

2、对于ECMAScript的三种特殊引用类型:Boolean, Number, String来说,实际上,每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型的对象,从而让我妈能够调用一些方法来操作这些数据。例如:

var s1 = "some text";

var s2 = s1.substring(2);

但是要注意,我们不能在运行时给基本类型值添加属性和方法,因为引用类型和基本包装类型的主要区别就是对象的生存期,后者会在执行瞬间后被立即销毁。

他们的instanceof和typeof的返回值也是不同的。例如:

var obj = new Object("some text");

alert(obj instanceof String);    //true

var numberObject = new Number(10);

var numberVlue = 10;

alert(typeof numberObject);  //"object"

alert(typeof numberValue);  //"number"

alert(numberObject instanceof Number);  //true

alert(numberValue instanceof Number);  //false

/*此结果对Number和Boolean类似,这也是为什么我们不推荐使用这两种引用类型。*/