麻烦帮忙看一下以下js代码段的运行结果是什么,为什么

「已注销」 2013-06-14 11:33:59

var name = "The Window";

var object = {
name: "My Object",
getNameFunc: function () {
return this.name;
}
};

alert((object.getNameFunc = object.getNameFunc)());


运行结果为什么是 "The Window"
...全文
167 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2013-06-24
  • 打赏
  • 举报
回复
高手果然大有人在,受教了!
helloword222 2013-06-16
  • 打赏
  • 举报
回复

<script type="text/javascript">
var name = "I am  Window";
var object = {
    name: "My Object",
    getNameFunc: function () {return this.name;}
};
var a=object.getNameFunc;alert(a);//①弹出源代码function () {return this.name;}
var a=object.getNameFunc();alert(a);//②弹出My Object
var a=object.getNameFunc;alert(a());//③弹出I am Window
</script>
在我对上面3种结果的原理慢慢理解、彻底理解之后,终于明白了下面这个语句的含义了 ④alert((object.getNameFunc = object.getNameFunc)()); 学习了!
lorcon 2013-06-15
  • 打赏
  • 举报
回复
object.getNameFunc = object.getNameFunc 相当于 function () { return this.name; } 所以alert((object.getNameFunc = object.getNameFunc)())= alert(function () {return this.name;}()) 就相当于执行了alert(this.name); 个人理解是这样
原来缘来 2013-06-15
  • 打赏
  • 举报
回复
受教了
RickzdWen 2013-06-15
  • 打赏
  • 举报
回复
这个问题的玄机在于赋值操作“=”的返回值是什么,var a = b;返回的是b。由于object.getNameFunc是个函数,所以(object.getNameFunc = object.getNameFunc)返回的就是一个匿名函数,你可以认为这个函数赋值给了一个临时变量TempFunc,这就是个函数复制的过程,TempFunc是全局的变量,所以其this指向window。这个过程应该等效于

var tempFunc = (object.getNameFunc = object.getNameFunc);
tempFunc();
ftiger 2013-06-15
  • 打赏
  • 举报
回复

<script type="text/javascript">
<!--
var name = "I am  Window";
 
var object = {
    name: "My Object",
    getNameFunc: function () {
        return this.name;
    }
};

var a= object.getNameFunc; //将函数从object中复制出来,这时函数的this指向window
alert(a());

//(var b=a),将返回a,同理(a=a) 返回a 所以这里返回的就是独立的匿名函数,效果等同于上面的代码
alert((object.getNameFunc = object.getNameFunc)());
//-->
</script>

helloword222 2013-06-15
  • 打赏
  • 举报
回复
学习求教: alert((object.getNameFunc = object.getNameFunc)()); 为什么这样写?

87,914

社区成员

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

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