欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > > 文章正文

object之toString方法深入剖析,tostring深入剖析

来源: javaer 分享于  点击 4517 次 点评:201

object之toString方法深入剖析,tostring深入剖析


obj.toString()的结果和Object.prototype.toString.call(obj)的结果不一样;

这是因为Object本身有toString方法,能返回具体类型。

而Array ,function等类型作为Object的实例,都重写了toString方法。

这些对象类型调用toString方法时,根据原型链的知识,调用的是对应的重写之后的toString方法,而不会去调用Object上原型toString方法。

所以采用obj.toString()不能得到其对象类型,只能将obj转换为字符串类型;因此,在想要得到对象的具体类型时,应该调用Object上原型toString方法。

var toString1=Object.prototype.toString;

var toString2={}.toString;

var bool=true;

var num=2;

var str="";

var fn=function(){};

var arr=[];

var date=new Date();

var reg=new RegExp();

var obj={};

console.log(bool.toString(), toString1.call(bool), toString2.call(bool)); console.log(num.toString(), toString1.call(num), toString2.call(num));

console.log(str.toString(), toString1.call(str), toString2.call(str));

console.log(fn.toString(), toString1.call(fn), toString2.call(fn));

console.log(arr.toString(), toString1.call(arr), toString2.call(arr));

console.log(date.toString(), toString1.call(date), toString2.call(date)); console.log(reg.toString(), toString1.call(reg), toString2.call(reg));

console.log(obj.toString(), toString1.call(obj), toString2.call(obj));

经测试,toString1 和 toString2作用是一样的 说明纯对象{}没有重写toString方法;而其他对象的toString都是重写过的,只是单纯地转换成字符串并返回。

相关文章

    暂无相关文章

用户点评