能够看到 str是一个基本类型,字符串类型,strObj是一个 对象类型,是String类型对应的包装类windows
在最后一行打 clear();清除数组
str是一个基本类型,他没有属性和方法,获得str的长度str.length 能够获得值,这是为何。app
给 str 添加一个属性 t也是能够的 str.t = 10;但赋值以后再看t 为undefined函数
JavaScript中有一个隐藏机制,当把一个基本类型,尝试为一个对象来使用时,好比在求长度,或添加属性时,会吧基本类型转化为对应的包装类型对象,至关于new String()一个一样的值,当完成访问或设置后,这个临时对象,会被销毁。spa
数字 number ,boolean都相似。prototype
typeof运算符会返回一个字符串,适合函数对象和基本类型的判断对象
为何 typeof null ==="object" 历史缘由记住就好继承
obj instanceof Object : 左操做数必须为对象,若是为基本类型直接返回false,。右操做数,必须为函数对象,函数构造器,不然会抛出异常。ip
判断左操做数的 原型链 上 ,是否有 右边构造函数的 prototype 属性。原型链
[1,2] instanceof Array === true
new Object() instanceof Array ===false
注意 不一样的 window 或 iframe 间的对象检测是不可使用instanceof的。
任何一个对象都有一个 constructor属性,继承自原型,constructor 会指向构造这个对象的构造器、构造函数。constructor是能够改写的因此使用时当心。
适合基本类型及Function检测,遇到null失效返回 object,用 === 方式判断
适合内置对象和基元类型,数组函数、在 IE 678 null undefined返回 [ object object ]。
适合自定义对象,也能够用来检测原生对象,在不一样 iframe 和 windows间检测时失效