关于原型方法

一天要饭生活又开始啦 2012-11-20 11:35:30
问下
var a = function() {
};
alert(a.toString());
alert(Object.prototype.toString.call(a));
这两种方法为什么不一样啊,有什么区别啊
...全文
344 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
-布谷鸟- 2012-11-22
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
引用 14 楼 hezitulong 的回复:
你想要这样的结果吗? var a = function() { }; alert(a.toString()); Object.prototype.toString.call(a); alert(Object.prototype.toString);
不是,就是问问a.toString()和toString.call(a)这两个结果为什么不同啊,感觉应该相同
  • 打赏
  • 举报
回复
引用 23 楼 danica7773 的回复:
参数类型限制,不对自然出错 引用 21 楼 veryhunger 的回复:var a = {}; alert(String.prototype.toString.call(a)); 这样不行吧?
哦,非常感谢,总算理解了
打字员 2012-11-21
  • 打赏
  • 举报
回复
参数类型限制,不对自然出错
引用 21 楼 veryhunger 的回复:
var a = {}; alert(String.prototype.toString.call(a)); 这样不行吧?
ylei.yanglei 2012-11-21
  • 打赏
  • 举报
回复
var a = function() {
};
alert(a.toString());
alert(Object.prototype.toString.call(a));

alert(Function.toString.call(a));//与a.toString()为同一方法
alert(a.toString === Function.toString);//true, 更能说明这一点

a.toString = function(){alert('重写')}//重写之后
alert(a.toString === Function.toString);//false, 被重写之后,

var b = [];
alert(typeof b);//object
alert(Object.prototype.toString.call(b));//[Object Array],
//1. 当你想知道某一对象的具体类型时很有用(特别是javascript的内置类(Date, Function, RegExp等)!
//2. 当你想调用原型中的方法,而不是重写后的方法时(如想调用a继承的toString, 而不是重写后的时)
  • 打赏
  • 举报
回复
var a = {}; alert(String.prototype.toString.call(a)); 这样不行吧?
  • 打赏
  • 举报
回复
顶一下。。。。
引用 18 楼 danica7773 的回复:
a 指向的是一个function 那么它的原型就是Function对象 因此如果你没有定义a的toString方法,那么a.toString() 调用的就是Function的toString 而Object对象也有自己的toString方法,因此,当使用call来调用toString时,调用的就是Object的toString 因为两个对象的toStri……
谢谢,是这样,非常感谢
打字员 2012-11-21
  • 打赏
  • 举报
回复
试试这个

var a = {};
alert(a.toString());
alert(Object.prototype.toString.call(a));
打字员 2012-11-21
  • 打赏
  • 举报
回复
a 指向的是一个function 那么它的原型就是Function对象 因此如果你没有定义a的toString方法,那么a.toString() 调用的就是Function的toString 而Object对象也有自己的toString方法,因此,当使用call来调用toString时,调用的就是Object的toString 因为两个对象的toString方法是不同的,所以结果自然不一样
  • 打赏
  • 举报
回复
引用 4 楼 zsp_1111 的回复:
JavaScript code?12345678alert(a.toString());// 按你给的代码, 那么上面这句相当于下面这个alert(Function.prototype.toString.call(a));// ------------// 那么, 如果下面2句你认为一样么?alert(Function.prototype.toString.call(a)……
感谢哦
似梦飞花 2012-11-20
  • 打赏
  • 举报
回复
var a = function() { }; Function.prototype.toString=function(){ return "function"; } Object.prototype.toString=function(){ return "object"; } alert(a.toString()); alert(Object.prototype.toString.call(a)); alert(a.toString()); 调用的是Function的toString alert(Object.prototype.toString.call(a));调用的是Object的toString Function可能重写了Object的toString方法吧? 个人感觉
HolyNova 2012-11-20
  • 打赏
  • 举报
回复

alert(a.toString());
// 按你给的代码, 那么上面这句相当于下面这个
alert(Function.prototype.toString.call(a));
// ------------
// 那么, 如果下面2句你认为一样么?
alert(Function.prototype.toString.call(a));
alert(Object.prototype.toString.call(a));
xinfucheng 2012-11-20
  • 打赏
  • 举报
回复
alert(a)和alert(a.toString())是等效的,alert(a)的实质是alert(a.toString()); 这个alert(Object.prototype.toString.call(a))实际有应用吗?
KK3K2005 2012-11-20
  • 打赏
  • 举报
回复
1)call是什么意思? 2)Object.prototype.toString == a.toString 吗? 3)a.toString 是从哪里来的?
  • 打赏
  • 举报
回复
自定。。。。
核子hezi 2012-11-20
  • 打赏
  • 举报
回复
你想要这样的结果吗? var a = function() { }; alert(a.toString()); Object.prototype.toString.call(a); alert(Object.prototype.toString);
  • 打赏
  • 举报
回复
问下楼上大姐,var a = "afaf"; a.toString()和toString.call(a)有什么区别啊? 这两句为什么不同啊?
未知数 2012-11-20
  • 打赏
  • 举报
回复
明显是因为Function类重写了toString方法嘛 alert(a.toString()); alert(Function.prototype.toString.call(a)); 你这样就一定是相同的了
  • 打赏
  • 举报
回复
引用 8 楼 zsp_1111 的回复:
引用 7 楼 veryhunger 的回复:var a = {}; a.b = {}; a.b.c = {}; alert(a["b.c"]); 问下,为什么这样不可以呢? JavaScript code?123456789a["b.c"];// 这样写会把"b.c"当成一个符串, 一个整体, 用 "b.c" 当成属性去 索引 Object a;a = ……
谢谢
  • 打赏
  • 举报
回复
var a = "afaf"; a.toString()和toString.call(a)有什么区别啊?
加载更多回复(2)

87,991

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧