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

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

时间:2014-10-24 22:10:20      阅读:270      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   os   ar   java   for   

 

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()

标签:style   blog   http   color   io   os   ar   java   for   

原文地址:http://www.cnblogs.com/coding2ing/p/4049250.html

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