首页 > 代码库 > JavaScript的数据类型都有什么? JavaScript中 toStirng() 与 Object.prototype.toString().call()

JavaScript的数据类型都有什么? JavaScript中 toStirng() 与 Object.prototype.toString().call()

 

JavaScript的数据类型都有什么? (via  BAT互联网公司2014前端笔试面试题:JavaScript篇  http://www.sxt.cn/u/756/blog/4508)

      基本数据类型:String,boolean,Number,Undefined, Null

  引用数据类型: Object(Array,Date,RegExp,Function)

疑问:这些基本的数据类型的值都是常量,而常量是没有方法的,为什么能够调用方法呢?答案是这样的,五种基本类型除了null、undefined以外都有与之对应的特殊的引用类型——包装类型。当代码被解释执行时,底层会对基本类型做一个类型转换,即将基本类型转换成引用类型,这样就可以调用相应引用类型有权访问到的方法。

via  JavaScript中toStirng()与Object.prototype.toString.call()方法浅谈 http://www.zhufengpeixun.cn/JavaScriptmianshiti/2014-02-28/271.html

via js判断是否为数组的函数: isArray()_javascript技巧_脚本之家 http://www.jb51.net/article/28737.htm 

if (value instanceof Array || (!(value instanceof Object) && (Object.prototype.toString.call((value)) == ‘[object Array]‘) || typeof value.length == ‘number‘ && typeof value.splice != ‘undefined‘ && typeof value.propertyIsEnumerable != ‘undefined‘ && !value.propertyIsEnumerable(‘splice‘))) { return ‘array‘; } 

 

自定义类型function Person(name, age) {    this.name = name;    this.age = age;}var person = new Person("Rose", 18);Object.prototype.toString.call(arr); //”[object Object]”很明显这种方法不能准确判断person是Person类的实例,而只能用instanceof 操作符来进行判断,如下所示:console.log(person instanceof Person);//输出结果为true

判断原生JSON对象:
var isNativeJSON = window.JSON && Object.prototype.toString.call(JSON);console.log(isNativeJSON);//输出结果为”[object JSON]”说明JSON是原生的,否则不是;
注意:Object.prototype.toString()本身是允许被修改的,而我们目前所讨论的关于Object.prototype.toString()这个方法的应用都是假设toString()方法未被修改为前提的。
本文所讨论内容多参考于《JavaScrip高级编程》第三版


 

JavaScript toString()                        参考:http://www.w3school.com.cn/jsref/jsref_toString_boolean.asp

Object.prototype                              返回 [object Object]

Object.prototype.toString.call()        跟下面 toString() 的形式,其实一个意思,返回的结果可以参考  JavaScript toString()

Object.prototype.toString().call()     参考:http://blog.csdn.net/spy19881201/article/details/12192767

 

 

示例: 

alert(Object.prototype.hasOwnProperty("toString"));     //  返回 true 
alert(Object.prototype.__proto__.hasOwnProperty("toString"));//报错

alert ("ad12".nodeType); // 返回 undefined ////// 出处 Object.prototype.toString( ).call() http://blog.sina.com.cn/s/blog_89e8215901012b10.html 

‘[object Object]‘:        if (undefined !== value.nodeType) {            if (3 == value.nodeType) {                return (/\S/).test(value.nodeValue) ? ‘textnode‘: ‘whitespace‘;            } else {                return ‘element‘;            }        } else {            return ‘object‘;

alert(Object.prototype); // 返回 [object Object] 

alert(Object.prototype.toString); // 返回 function toString{[native code]} 

alert(Object.prototype.toString.call([123]));          //返回[object Array]alert(Object.prototype.toString.call(‘123‘));          //返回[object String]alert(Object.prototype.toString.call(/123/));          //返回[object RegExp]alert(Object.prototype.toString.call(123));            //返回[object Number]alert(Object.prototype.toString.call(undefined));      //返回[object Undefined]alert(Object.prototype.toString.call(null));           //返回[object Null]

 

JavaScript的数据类型都有什么? JavaScript中 toStirng() 与 Object.prototype.toString().call()