日期:2014-05-16  浏览次数:20473 次

关于js里面的this 对象的 指代问题【疑问】
最近有个疑惑(关于this的)
var name ="the window";   //window
var object={
   name :"my object",
   getName:function(){
      return this.name;
   }
}

正常情况:object.getName(); //“my object”
2. (object.getName)();   //"my object"
3. (object.getName=object.getName)(); //"the window"

第三个,书上的解释是,

> 先执行一条赋值语句,然后再调用赋值后的结果。因为这个赋值的表达式是函数本身,所以this的值不能维持
小弟不解,为什么是the window 。还请大侠们指点
JavaScript this 对象

------解决方案--------------------
3.个好理解 通过表达得出是一个  函数

2.我倒以为 是 the window 了
------解决方案--------------------


abc.fn()  // this ===abc
xyz.fn()  //  this === xyz
//fn点号前是哪个,this就指向哪个,没有就指向 window

------解决方案--------------------
function x1(){
object.getName = 'x1';
}
function x2(){
var object.getName = 'x2';
}


这两个有什么不一样。

function xx1(){
object.getName =  function(){
return this.name;
}
}
function xx2(){
object.getName= object.getName;
}

这两个是不是一样