• this的指向


    this的指向

    对于一些刚刚学习js的小萌新来说,看到this绝对会是比较头疼的事情,因为不知道他到底指向谁,从而看不懂别人写的代码,希望我的这篇博客会对大家有所帮助,同时也整理一下自己理解的思路,如果有任何不对的地方,欢迎反馈.

    this有四大环境(调用模式)下的指向,在我们判断this的到底代替谁之前,必须确定当前this的环境,this就像一个变色龙,根据环境不同指向也不同

    1. 函数调用
    function fn(){
                console.log(this); //打印看一下this,发现this指向window
            }
            fn();  //可以理解为window.fn();

           2.构造函数调用模式

    function Person(name,age){

    this.name = name,

    this.age = age,

    this.say = function(){

    console.log(this);

    }

    }

    var p = new Person("二狗",20);

    p.say(); //打印出来的是p这个实例对象

    var q = new Person("狗蛋",21);

    q.say(); //打印出来的事q这个实例对象

     3.对象调用模式

    其实构造函数里的this.name等一些的this也是指向实例对象

     var obj = {
                name : "zs",
                age : 18,
                say : function(){
                    console.log(this);  //指向obj
                }
            }
            obj.say(); //因为是obj这个对象去掉用的say方法
    
    var arr = [obj,function(){console.log(this)},2];
            arr[0].say();  //这里指向就是obj
            arr[1](); //指向的是arr
            //再看看这个
            obj['say']();//这里是用了对象的[]语法,实际上与.语法一样的所以是对象调用模式,指向的是obj,而不是window
    

      

          4.上下文调用模式

    这个模式虽说叫上下文,但我个人感觉叫借用这个名字更容易理解

    作用:改变this的指向

    使用场景:借用其他类型的方法,自己又没有这个方法

    方法:call  apply  bind,根据不同的情况指向也不同,具体用法请查看百度

  • 相关阅读:
    Mysql数据库快速备份还原-mysqldump
    写给年轻人的交友和人脉建议
    令人担忧的趋势:科技崇拜与人文失落
    高情商的特征
    高情商与朋友圈
    数据库临时表空间设置
    oracle 临时表空间的增删改查
    语言表达能力写作能力决定一个人的发展和未来
    一个人如何从平庸到优秀,再到卓越?
    06.堆排序
  • 原文地址:https://www.cnblogs.com/wchjdnh/p/10170762.html
Copyright © 2020-2023  润新知