谁能解释下这几个输出结果产生差异的原因

JayPan2008 2012-12-12 09:38:09


谁能说下产生这几个结果有差异的原因?

各位踊跃发言,一起探讨学习!
...全文
236 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kilin_Zhang 2012-12-26
  • 打赏
  • 举报
回复
3楼正解
引用 3 楼 likeajin 的回复:
关键在于最后一个语句,先执行=号表达式,即赋值表达式,该表达式是能得到一个值的,通俗地可以理解为赋值语句有返回值,所以有var a=b=c=……这种语句,那么代码中的例子最后一行语句可以拆分为: JavaScript code?1234//(object.getName=object.getName)()var tmp=object.getName;object.get……
鸡肋啊 2012-12-17
  • 打赏
  • 举报
回复
确实没搞懂楼主想表达的;不过下面的是个赋值语句输出的结果是那样很正常
未知数 2012-12-17
  • 打赏
  • 举报
回复
没看出什么有需要深入探讨的东西 第一次时方法由object调用,所以返回其name成员 第二次时先自行括号内的等号表达式,等号表达式会返回左值,为一个函数引用,执行时没有对象调用它,默认调用者就是window,所以会得到全局变量name
likeajin 2012-12-17
  • 打赏
  • 举报
回复
关键在于最后一个语句,先执行=号表达式,即赋值表达式,该表达式是能得到一个值的,通俗地可以理解为赋值语句有返回值,所以有var a=b=c=……这种语句,那么代码中的例子最后一行语句可以拆分为:

//(object.getName=object.getName)()
var tmp=object.getName;
object.getName=tmp;
tmp();
执行时只是执行单纯的一个函数,而与函数所属对象无关,所以函数中的this指向了当前的window对象,不再像调用对象的方法一样。
jeff_jiang 2012-12-13
  • 打赏
  • 举报
回复
发代码,你log打的什么
JayPan2008 2012-12-13
  • 打赏
  • 举报
回复
咋回事? 没人有想法?

87,997

社区成员

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

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