######如题,仅仅是javascript语法问题。我找了很多资料也没有理出头绪,包括[javascript 神秘花园](http://bonsaiden.github.com/JavaScript-Garden/zh/#object.general)
废话不说,上代码
var a = {0:1,1:1,2:3,length:3};
上面创建了一个a对象。我想知道的是,a对象中,a[1]是什么类型?OK,做如下试验。
a[1] instanceof Number
//false
typeof a
//return number
…那么a[1]到底是什么类型?难道不是数字吗?那么为什么
a[1]instanceof Number
回返回false
问的问题不够清晰嘛?
(1) instanceof Number
// false
说明数值并不是Number类型
那为什么
typeof a[1]
//return number
console.log(typeof 1, 1 instanceof Number);//number false
var nu = new Number(1);
console.log(typeof nu, nu instanceof Number);//object true
原因:
object instanceof constructor
#具体分析见MDN enter link description here
var nu = new Number(1);//一个新创建的 Number 对象
var myNum=Number(1);//自己的参数转换成一个原始的数值,等同于myNum=1
console.log(typeof nu, nu instanceof Number);//object true
console.log(typeof myNum, myNum instanceof Number);//number false
我大概明白了
instanceof
的使用需要new出来一个对象,这个对象有constructor属性。constructor属性里是这个对象的类型名称。
a[1]
不是new出来的对象而是基本类型。没有constructor属性。但是
typeof a[1]
可以检测类型,并返回类型的名称。 感谢感谢
typeof a[1] ==> 'number'
与 a[1] instanceof Number ==>false
不矛盾,说明a[1]是primitive type而非object type
别太纠结,只要记住,typeof o != 'object'
,则 instanceof
运算毫无意义