A函数调用B函数时,为何B函数中的 this 会被识别成A函数中的 this 呢?如果这样,this还有什么用呀?
比如下列代码,Father函数调用Son函数,在Son函数内部,按理说,this应该是表示自已,可是,它却会识别为A函数的this,
有代码为证,这是为什么呢? function Father() {
this.name = 'father';
Son();
} function Son() {
alert(this.name);
}

解决方案 »

  1.   

    LZ的函数并没有使用new来实例化,所以Father里的this代表的是windowthis.name = 'father';相当于window.name = 'father';同理,Son中的this.name也相当于window.name,所以结果一样
      

  2.   

    代表的是 window, 什么意思,请明示。
      

  3.   

    [window对象]  它是一个顶层对象,而不是另一个对象的属性即浏览器的窗口。  属性  defaultStatus 缺省的状态条消息
      document 当前显示的文档(该属性本身也是一个对象)
      frame 窗口里的一个框架((FRAME>)(该属性本身也是一个对象)
      frames array 列举窗口的框架对象的数组,按照这些对象在文档中出现的顺序列出(该属性本身也是一个对象)
      history 窗口的历史列表(该属性本身也是一个对象)
      length 窗口内的框架数
      location 窗口所显示文档的完整(绝对)URL(该属性本身也是一个对象)不要把它与如document.location混淆,后者是当前显示文档的URL。用户可以改变window.location(用另一个文档取代当前文档),但却不能改变document.location(因为这是当前显示文档的位置)
      name 窗口打开时,赋予该窗口的名字
      opener 代表使用window.open打开当前窗口的脚本所在的窗口(这是Netscape Navigator 3.0beta 3所引入的一个新属性)
      parent 包含当前框架的窗口的同义词。frame和window对象的一个属性
      self 当前窗口或框架的同义词
      status 状态条中的消息
      top 包含当前框架的最顶层浏览器窗口的同义词
      window 当前窗口或框架的同义词,与self相同  方法  alert() 打开一个Alert消息框
      clearTimeout() 用来终止setTimeout方法的工作
      close() 关闭窗口
      confirm() 打开一个Confirm消息框,用户可以选择OK或Cancel,如果用户单击OK,该方法返回true,单击Cancel返回false
      blur() 把焦点从指定窗口移开(这是Netscape Navigator 3.0 beta 3引入的新方法)
      focus() 把指定的窗口带到前台(另一个新方法)
      open() 打开一个新窗口
      prompt() 打开一个Prompt对话框,用户可向该框键入文本,并把键入的文本返回到脚本
      setTimeout() 等待一段指定的毫秒数时间,然后运行指令事件处理程序  事件处理程序  Onload() 页面载入时触发
      Onunload() 页面关闭时触发
      

  4.   

    我明白了,
    Son()只是一个普通的全局函数,并不是不一个类。
    所以只是调用,而不是实例化,所以
    this,还是Father()中的this
      

  5.   

    好想知道。JavaScript是怎么初始化的。