js中的方法重写问题

zenglingshu 2011-09-15 04:29:52
比如说我想对toString这个方法重写,使得对每一个对象,当其调用toString这个方法时,都能输出:“hello”。
代码如下:Object.prototype.toString = function(){ return "hello";};
我定义一个典型的对象a:var a = {};调用toString方法(a.toString())时,输出的结果是“hello”。
可是当我把这个toString方法用在window或者document对象时,却得到的是"[object Window]",或者"[object HTMLDocument]",而不是我想要的“hello”,请问各位大侠,这是什么原因,谢谢!
(说明:经测试,window instanceof Object的结果是true,window instanceof Function的结果是false,window instanceof Array的结果也是false。也就说明window是Object对象了。)
...全文
386 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Exodia 2011-09-15
  • 打赏
  • 举报
回复
window属于浏览器宿主对象,浏览器应该把window的某些属性设置为不可写了。
豆虫 2011-09-15
  • 打赏
  • 举报
回复
还有一种就是不允许你重写Dom对象和js对象的toString方法
licip 2011-09-15
  • 打赏
  • 举报
回复
这说明window内部中又把toString()方法重写了。应该是这个可能。
打字员 2011-09-15
  • 打赏
  • 举报
回复
DOM对象,js内置对象

object, Object 是不同的

87,990

社区成员

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

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