我试图通过不使用typeof来获取参数的类型。另外(它是练习的一部分)我必须使用Object.prototype.toString ...
调用该函数应该返回(例如,如果它是一个字符串)" String"。但是,我的代码返回String]
如何取下支架? 谢谢!
function types(x){
var array = Object.prototype.toString.call(x);
var arr= array.split(" ");
return arr[1];
}
类型("你好&#34);
答案 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