码迷,mamicode.com
首页 > 编程语言 > 详细

Javascript 中 instanceof 使用遇到的问题与探讨

时间:2015-04-19 19:39:15      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:javascript   instanceof typeof   

先上代码:
    var a = 10;
    alert(a instanceof Number);//false 这里为什么是false?
    alert(a instanceof String);//false
    alert(a instanceof Object);//false 这里为什么是false?   
    alert(typeof a == ‘number‘);//true
   
    var a = [‘1‘,‘a‘];
    alert(a instanceof Array);//true
    alert(a instanceof Object);//true
    alert(typeof a == ‘object‘);//true
   
    var a = ‘a‘;
    alert(a instanceof String);//false 这里为什么是false?    
    alert(a instanceof Object);//false 这里为什么是false?   
    alert(typeof a == ‘string‘);//true

我想不通的是: 为什么是false?我有百度过答案,得到的答案是
instanceof 用于判断是否是某个对象的实例;typeof 用于判断数据类型。但这个答案不足以说明问题,故上来请教,请教教我,谢谢!

==========================华丽分割线==========================================


自问自答下:
一个具体的数字,10,它可以认为是number类型,也可以认为是对象类型中Number的一个实例,但是这样就犯了种类划分冲突的问题了,它即是 number类型,又是Object类型(其子类Number类型),因此,instanceof要排除已经定义的数据类型中规定的类型,也就是只适用于 自定义类型。
另外,对于数组只有类Array的概念,没有数组数据类型,typeof只能返回object数据类型,因此,对于数组是可以用instanceof的。

综上:没有必要过于纠结javascript的语法,因为它本身是一种弱的类型变量语言,确实不够严谨。


本文出自 “7889902” 博客,转载请与作者联系!

Javascript 中 instanceof 使用遇到的问题与探讨

标签:javascript   instanceof typeof   

原文地址:http://7899902.blog.51cto.com/7889902/1635783

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!