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);

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

  • 相关阅读:
    当老板如何带团队?
    创业者第一法宝-了解自己
    交流才能交易,交易才能交心
    集合框架
    MySQL一些命令语法
    JS组成整理
    git中可以pull但是push提示Everything up-to-date的情况
    循环判断以及文件的使用--练习1
    Hello World !
    linux文件权限修改
  • 原文地址:https://www.cnblogs.com/xiaohaodeboke/p/12166559.html
Copyright © 2011-2022 走看看