zoukankan      html  css  js  c++  java
  • JavaScript 中的 this

    JavaScript 中的函数既可以被当作普通函数执行,也可以作为对象的方法执行,这是导致 this 含义如此丰富的主要原因。

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

     为什么这个的输出是The Window而下面的输出却是My Object?

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

     调用代码alert(object.getNameFunc()());

    javascript是动态(或者动态类型)语言,this关键字在执行的时候才能确定是谁。所以this永远指向调用者,即对‘调用对象‘者的引用。
    第一部分通过代码:object.getNameFunc()调用返回一个函数。这是个返回的函数,它不在是object的属性或者方法,此时调用者是window。因此输出是 The Window

    第二部分,当执行函数object.getNameFunc()后返回的是:
    function()
    {
    return that.name;
    }
    此时的that=this。而this指向object,所以that指向object。无论你执行多少次,他都是对object的引用,所以输出My Object

    由于其运行期绑定的特性,JavaScript 中的 this 含义要丰富得多,它可以是全局对象、当前对象或者任意对象,这完全取决于函数的调用方式。

    JavaScript 中函数的调用有以下几种方式:作为对象方法调用,作为函数调用,作为构造函数调用,和使用 apply 或 call 调用

    相关链接:

    深入浅出javascript中的this:   http://www.ibm.com/developerworks/cn/web/1207_wangqf_jsthis/

  • 相关阅读:
    线性动力学变分原理基础 Part1
    对分析动力学的一些理解
    Matlab数值求解超越方程的根
    FORTRAN数值求超越方程的根
    vim 基础操作
    a simple vim set for fortran
    g95 ld: cannot find crt1.o: No such file or directory
    ug中英文对照
    autocad一些快捷键和命令
    列选主元的高斯消元法的Fortran程序
  • 原文地址:https://www.cnblogs.com/zhuiluoyu/p/4683359.html
Copyright © 2011-2022 走看看