zoukankan      html  css  js  c++  java
  • this指向问题

    一、函数this的指向,是当我们调用函数的时候确定的,调用方式的不同决定了this的指向不同

    一般指向我们的调用者:

    调用方式 this指向
    普通函数调用 window
    构造函数调用 实例对象,原型对象里得方法也指向实例对象
    对象方法调用 该方法所属的对象
    事件绑定方法 绑定事件的对象
    定时器函数 window
    立即执行函数 window

    二、改变函数内部this指向

    js提供了3中方法帮助我们处理函数内部this指向问题

      1.call()方法

    var o = {name:andy}
    
    function fn(a,b){
        console.log(this);
        console.log(a + b);  
    };
    //call 第一种用法可以调用函数
    fn.call(o,1,2);
    
    // 第二种用法 改变函数内部this指向
    // call的主要作用可以实现继承
    function Father(uname,age,sex){
        this.uname = uanme;
        this.age = age;
        this.sex = sex;
    }
    
    function Son(uname,age,sex){
        Father.call(this,uname,age,sex);
        console.log(this);
    }
    
    var son = new Son("花千骨",16,"女");

    2.apply():会调用函数,改变函数内部的this指向,传递的参数必须是数组形式

      主要应用场景:经常与数组有关系,比如借助于数学对象实现数组最大值最小值

    3.bind():不会调用函数,可以改变函数的内部的this指向,主要应用场景:改变定时器内部的this指向:setInterval(function(){}.bind(this),2000);

  • 相关阅读:
    正则表达式
    Requests库基本使用(转载)
    prometheus + grafana + pushgateway 搭建监控可视化系统
    Docker的系统资源限制(转载)
    DAY8 文件操作
    DAY7 集合,深浅copy
    DAY6 Python之代码块,小数据池的详解
    DAY5 Python基础类型之字典
    DAY4 Python数据类型之列表
    DAY3 python基础之数据类型总览
  • 原文地址:https://www.cnblogs.com/woaiacfun/p/13893537.html
Copyright © 2011-2022 走看看