this的四种用法

小编 2026-06-11 阅读:1605 评论:0
  js 中的this是比较难理解的。这里将介绍this的具体用法。主要是下面的四种方法:  1...

  js 中的this是比较难理解的。这里将介绍this的具体用法。主要是下面的四种方法:

  1.作为对象的方法;

  2.作为普通函数中;

  3.作为构造函数调用;

  4.作为Function.prototype.call或者Function.prototype.apply调用;

   一、作为对象的方法使用,this指向这个对象;

      For Example:

  var adou = {

    a:1,

    getAdou: function() {

      console.log( this===adou );//true

      console.log( this.a );//1

    }

     }

     adou.getAdou();

  二、作为普通函数调用,this,指向全局变量window (浏览器中)

     For Example:

  window.a = "adou";

     function getAd(){

       console.log(this.a);//adou

  }

  getAd();

     在举一个容易混淆的函数例子:

     For Example2:

     window.a = "adou";

  var adou = {

    a:1,

    getAdou: function() {

      console.log( this.a );//adou

    }

      }

      var  adouTwo = adou.getAdou;//将adou的getAdou方法赋值给了adouTwo后,

                                                //adouTwo就是一个普通函数,在调用这个普通函数时候,this指向的就是全局变量

     adouTwo();

 三、作为构造函数调用,this的指向是 往下看

      构造函数和普通函数差不多一样的。但是在与调用方式 new的区别(new的具体解析下回分解),当用 new 运算符调用函数时,该函数会返回一个对象。一般情况下,构造器里面的this就是指向返回的这个对象。

      For Example:

      function Ad(){

    this.a = "adou";

  }

     var adou = new Ad();

  console.log(adou.a);//adou 

   但是,如果构造器函数显示的返回一个object类型的对象,new运算最终的结果会返回这个对象;

   For Example2:

  

  function Ad(){

    this.a = "adou";

    return {

      a : "Bob"

    }

  }

  var ad = new Ad();

  console.log(ad.a);//Bob

 四、 Function.prototype.call 或 Function.prototype.apply 调用  this是指: 往下看

     这里简单的说call和apply这个方法:一个对象调用另一个对象的成员函数或属性等。在调用call(apply)的时候。可以动态传入 this ,这个this就是我们最终要操作的对象

      For Example:

  var ad1 = {

       name : "adou",

    getName : function(){

      console.log(this.name)

    }

   }

     var ad2 = {

    name : "adou2"

  } 

      ad1.getName();//adou

  ad1.getName.call(ad2);//adou2

  

 

下方的this 如下:

<script>var tree = {};tree.decorate = function () {console.log(333)}tree.getdeco  = function (deco) {	console.log(this,deco)	tree[deco].prototype = this;	return new tree[deco]}tree.redBalls = function(){	console.log('1',this);	this.decorate = function (){		console.log('2',this)		this.redBalls.prototype.decorate();		console.log('这是一个decorate')	}}tree  = tree.getdeco('redBalls');tree.decorate()</script> 

  

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
标签列表