javascript - Object.prototype.toString.call(a) 和a.toString()不同?
PHP中文网
PHP中文网 2017-04-10 15:24:12
[JavaScript讨论组]

如下代码,我的理解resres2的值应该是一样的。

var a = "abc";
var res = Object.prototype.toString.call(a);    //"[object String]"
var res2 = a.toString();    //"abc"
PHP中文网
PHP中文网

认证0级讲师

全部回复(4)
黄舟

对于Object.prototype.toString的返回格式通常是:

[object Undifined]
[object Null]
[object class] // class指的是对象类型

当调用a.toString()是,调用的是String.prototype.toString,返回的就是a的值

PHP中文网
  1. Object.prototype.toString.call()一般使用来判断类型的。
  2. a.toString(); //"abc"因为Stringprototype上也有toString()这个方法所以就不用到Object里找了。
阿神

我记得是,String类型的toString被重写了,调用的是valueOf方法,返回的是原始的字符串值。当然JavaScript中许多类型的toString方法都被重写了,所以调用的时候,会在原型链上优先找到自身的toString方法,而非调用Object.prototype.toString

伊谢尔伦

toString() 方法返回一个代表该对象的字符串,
它被写在Object构造函数的原型对象上,即Object.prototype.toString
我们平时用到的转换字符串的场景,如

var a = 2; 
console.log(a.toString());
//'2'

是因为继承自Object上的对象重写了toString这个方法
如果要调用原型上的方法返回对象的类型,必须把调用toString的对象改变成Object本身

var a = 2;
console.log(Object.prototype.toString.call(a));
//[Object Number]

所以一般见到Object.prototype.toString.call(variable)都是用来判断变量的类型的

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号