菜鸟请教:JS问题

lp_nn 2014-05-06 04:09:47
function foo(){
alert(this);
}


var bar={
baz:foo
};


(bar.baz=bar.baz)();
这里输出的this为window,为什么时候这样,赋值操作的原理是怎么样的?菜鸟求解答!
...全文
708 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lp_nn 2014-05-09
  • 打赏
  • 举报
回复
引用 3 楼 yibey 的回复:

(bar.baz=bar.baz)();

这个代码等价于 var t = (bar.baz=bar.baz); t(); 因此这个代码可以变种为 (bar.baz||flase)(); (true&&bar.baz)(); JS是边解析边执行的脚本语言
谢谢解答! 那(bar.baz)();为什么又不是window呢?是括号还是什么起作用了?
ziluopao2014 2014-05-07
  • 打赏
  • 举报
回复
function foo(){ alert(this); } 的全写是: window.function foo(){ alert(this); }
yibey 2014-05-06
  • 打赏
  • 举报
回复

(bar.baz=bar.baz)();

这个代码等价于 var t = (bar.baz=bar.baz); t(); 因此这个代码可以变种为 (bar.baz||flase)(); (true&&bar.baz)(); JS是边解析边执行的脚本语言
yang_1224 2014-05-06
  • 打赏
  • 举报
回复
当前脚本执行的上下文是window,所以this指向的就是window
bdmh 2014-05-06
  • 打赏
  • 举报
回复
this就是你当前脚本执行所属的对象啊

87,907

社区成员

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

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