JavaScript数据类型

一、用toString判断类型

toString() 方法返回一个代表该对象的字符串。当对象需要转换为字符串时,会调用它的toString()方法。

默认情况下,每个对象都会从Object上继承到toString()方法,如果这个方法没有被这个对象自身或者更接近的上层原型上的同名方法覆盖(遮蔽),则调用该对象的toString()方法时会返回"[object type]",这里的字符串type表示了一个对象类型。点击查看在线代码

var toString = Object.prototype.toString;

function write_one(str) {
    document.writeln(‘<p>‘+str+‘</p>‘);
}
// [object Date]
write_one(toString.call(new Date));

// [object String]
write_one(toString.call(new String));

// [object Math]
write_one(toString.call(Math));

// [object Number]
write_one(toString.call(1));

// [object Boolean]
write_one(toString.call(true));

// [object Object]
write_one(toString.call(new Object()));

// [object Regexp]
write_one(toString.call(/\d/));

// [object Array]
write_one(toString.call([]));

// [object Function]
write_one(toString.call(write_one));

// [object Error]
write_one(toString.call(new Error()));

// [object Arguments]
function display_args() {
    write_one(toString.call(arguments));
};
display_args();

//Since JavaScript 1.8.5
// [object Undefined]
write_one(toString.call(undefined));

// [object Null]
write_one(toString.call(null));

开源的underscore库中的那几个isFunction、isString等方法就是用toString做的判断:

  _.each([‘Arguments‘, ‘Function‘, ‘String‘, ‘Number‘, ‘Date‘, ‘RegExp‘, ‘Error‘], function(name) {
    _[‘is‘ + name] = function(obj) {
      return toString.call(obj) === ‘[object ‘ + name + ‘]‘;
    };
  });

 

二、基本类型

《JavaScript语言精髓与编程实践》中提到有6种基本类型:

技术分享

 

 

参考资料:

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。