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类似,这也是为什么我们不推荐使用这两种引用类型。*/