var name = "The Window";var object = { name: "My Object", getNameFunc: function () { return this.name; } };alert((object.getNameFunc = object.getNameFunc)()); 运行结果为什么是 "The Window"
<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)());学习了!
function () {
return this.name;
}所以alert((object.getNameFunc = object.getNameFunc)())=
alert(function () {return this.name;}())就相当于执行了alert(this.name);个人理解是这样
alert((object.getNameFunc = object.getNameFunc)());
为什么这样写?
<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>
tempFunc();
<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)());学习了!