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

    在Java等其他面向对象语言中,关键字this指向的是类的当前实例,在js中,this的值是由函数的调用上下文以及调用位置所决定的。

    1. 当this用于全局上下文中:如果是在全局上下文中使用this,它就会被绑定在全局上下文。比如在浏览器中,全局上下文通常是window。对于函数来说也是如此。如果是在定义全局上下文的函数中使用this,它依然被绑定在全局上下文,因为该函数是全局上下文的一部分:

    function globalAlias(){

      return this;

    }

    2. 当this用于对象的方法中:在这种情况下,this被赋值或绑定到包含对象上。注意,如果对象存在嵌套的话,包含对象就是那个直接的父对象。

    var f = {

       name = "f",

       func:function(){

            return this;

      }

    };

    console.log(f.func());

    //prints -

    //[object object]{

    //      func:function(){

    //            return this;

    //      },

    //     name:"f"

    // }

    3. 如果不存在上下文:当一个函数不跟随任何对象调用的时候,就不会有上下文。默认情况下,它会被绑定到全局上下文。如果在这种函数中使用this,它就会绑定到全局上下文。

    4. 当this用于构造函数中:我们之前已经看到过,当函数使用关键字new来调用时,它就会被作为构造函数使用。在构造函数中,this指向被构造的对象,在下面的例子中,f()是构造函数(因为是通过关键字new调用的),因此this指向的就是被创建出的新对象。当我们使用this.member = 'f'时,新的member属性就被添加到新创建的对象中,在这个例子中,新对象就是o:

    var member = "global";

    function f(){

      this.member = "f";

    }

    var o=new f();

    console.log(o.member);

    如果实例和原型中都定义了相同的属性,会优先使用实例属性。

  • 相关阅读:
    Myeclipse如何使用自带git工具向远程仓库提交代码
    myEclipse配置java版本(环境、项目、编译)
    新搭建项目时需要修改的内容
    干锅土豆
    SpringMVC MongoDB之“基本文档查询(Query、BasicQuery)”
    史上最全web.xml配置文件元素详解
    Web.xml配置详解之context-param
    史上最全的maven的pom.xml文件详解
    MongoDB 进阶模式设计
    备忘整理
  • 原文地址:https://www.cnblogs.com/xiaohaodeboke/p/12166559.html
Copyright © 2011-2022 走看看