Object.prototype.toString() - 试图获得' String'而不是[object String]

时间:2016-05-22 23:06:19

标签: javascript prototype typeof

我试图通过不使用typeof来获取参数的类型。另外(它是练习的一部分)我必须使用Object.prototype.toString ...

调用该函数应该返回(例如,如果它是一个字符串)" String"。但是,我的代码返回String]

如何取下支架? 谢谢!

function types(x){

   var array = Object.prototype.toString.call(x);
    var arr= array.split(" ");
   return arr[1];
}

类型("你好&#34);

2 个答案:

答案 0 :(得分:0)

我不知道为什么你必须使用Object.prototype.toString,因为本地字符串不是一个对象。如果你强制它在一个字符串上,那么它将返回“[object String]”。

如果您想要变量的类型,那么您只需使用以下函数

var types = x => x.contructor.name;

如果必须,请使用以下

var types = x => Object.prototype.toString.call(x).match(/\[object (.*)\]/)[1];

当您首先使用对象变量包装原始变量,然后调用其toString函数,然后调用regExp(或substr)时,这是低效的。

答案 1 :(得分:0)

这将返回String。使用slice()删除尾随的]

function types(x) {
   var array = Object.prototype.toString.call(x);
   var arr = array.split(" ");
   return arr[1].slice(0, -1);
}
console.log(types('hello')) // String