7-4第1题

7-4第1题

第三个document.write怎么就弹出一个return后面的值呢?这个toString没看见被调用呢?函数没被调用如何执行return呢?不懂

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
怎么都被占用了呢 2017-12-11 19:11:04

1、方法被调用不是document.write调用的,而是对象调用的,这个方法只不过在它里面定义了而已,这个思想要转变过来。

2、不管document里面写了什么,都会把里面的内容转化成字符串,转成字符串的方法是内置定义好的toString(),但是,在第三个 document.write()中的内容是一个对象,这个对象重写了内置的toString()方法,这个时候的toString()方法是对象中我们定义的那个,所以当 document.write执行的时候,不管里面是什么,都会调用重写的toString()方法,而不是内置的toString()方法。

3、你看不到对象里的函数被调用,因为他是自动调用的,只要写了document.write()里面的内容就会执行我们重写的tostring方法,而这个方法就是告诉程序去输出return的那句话。


  • 提问者 潜狸 #1
    那name:xm怎么没有显示出来呢,这又是哪里的原因
    2017-12-11 19:17:13
  • Miss路 回复 提问者 潜狸 #2
    不管 document.write()里面写的是啥,都只会调用重写的toString方法,而重写的toString方法的功能就是return的那句。
    2017-12-12 09:39:13
  • 提问者 潜狸 #3
    意思就是当我们写document.wrtite的时候,激活了对象,进而使得对象去调用了toString方法,也就是此时的匿名函数被激活,所以返回一个return值?是这个意思吗?
    2017-12-13 22:16:53
怎么都被占用了呢 2017-12-11 17:29:05

我上面写的第一句话,是document.write的工作机制。如果参数不为字符串时,会调用参数的toString方法。但是第一题中的第三个document.write,参数是个对象,又重新定义了toString()方法,所以它会调用重写方法,将返回值进行输出

  • 提问者 潜狸 #1
    你的意思是document.write使得它里面的函数被调用了,就是说document.write有调用函数的功能,因为我一直纠结的就是没看见对象里面的函数没被调用,所以return不起作用,还有它写出的时候xm怎么出不来呢?
    2017-12-11 18:29:24
怎么都被占用了呢 2017-12-11 16:28:41

  document.write期望接收和输出字符串,当接收的参数不为字符串时,会调用参数的toString方法,将其转化成字符串输出。重写对象的toString()方法,就按照重写方法的返回值输出

  • 提问者 潜狸 #1
    那最后一个可以说成是语法吗还是啥,还有你那个name就出不来了?前面两个你明白,就是最后一个还是怎么明白
    2017-12-11 16:34:17
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
HTML5与CSS3实现动态网页 2018
  • 参与学习       1887    人
  • 提交作业       4643    份
  • 解答问题       5760    个

有HTML和CSS基础,却不知道如何进阶?本路径带你通过系统学习,完成从“会做网页”到“做出好的动态网页”的蜕变,迈出成为前端工程师的第一步。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师