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

  • 相关阅读:
    Ubuntu12.04配置永久静态ip地址
    linux shell 命令获取字符串/文件的MD5值
    设置VMware中Kali 共享文件夹
    tomcat的一些优化及报错
    用Toad for Oracle创建数据库表空间和用户
    linux远程Windows服务器
    linux查询及添加用户
    AJAX
    Cookie和Session
    Django-中间件
  • 原文地址:https://www.cnblogs.com/woaiacfun/p/13893537.html
Copyright © 2011-2022 走看看