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

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

  • 相关阅读:
    (zt)在PHP中使用全局变量
    (zt)Flash与C++交互
    (zt)关于Flash Socket通信的安全策略问题的一点心得
    (zt)svn 随服务器启动
    使用InstallShield安装和卸载SQL Server数据库(利用sql脚本)
    异常查看部分代码
    VC为控件添加背景
    深入分析MFC文档视图结构
    VC数据库编程概述
    (转)WEB程序打包详解:(连接SQL2005数据库,修改配置文件,建立虚拟目录)
  • 原文地址:https://www.cnblogs.com/xiaohaodeboke/p/12166559.html
Copyright © 2011-2022 走看看