美文网首页
关于this指向问题。

关于this指向问题。

作者: 为君梳作半面妆 | 来源:发表于2017-10-15 12:31 被阅读0次

    this的运用场景有以下几个:

    1.函数调用

    2.对象的方法调用

    3.构造函数调用

    4.call和apply调用

    一、函数调用

    window.word='you are my Mr Right'

    function aa(){

    console.log(this.word)

    }

    function bb(){

    var word = 'you no my Mr Right'

    aa();

    }

    bb();

    运算结果是 you are my Mr Right。

    可以看到当作为函数调用时,this指向的是window对象。

    二、对象方法调用。

    var car = {

    name : "BMW",

    price : "200000",

    showName:function(){

    console.log(this.name);

    },

    showPrice:function(){

    console.log(this.price)

    }

    }

    car.showName();

    car.showPrice();

    运算结果是: BMW 200000

    可以看到,当作为对象方法调用时,this指向的是该方法所在对象本身。

    三、构造函数调用

    构造函数和普通函数一模一样,区别在于调用方式,当用new运算符调用时,函数会返回一个对象,构造器的this指向当前返回的对象。

    function Car(){

      this.name="baoma",

      this.price="20000"

      this.showPrice= function(){

       console.log(this.price);
    }

    }
    var car = new Car();

    car.showPrice();

    运算结果是20000.

    由此可知,这里的this指的是car这个对象。

    四、call 和apply

    function Car(){

      console.log(this.name);

    }

    var bmw={

      name:"bmw",

      showName:function(){

       Car.apply(this);

    }

    }

    bmw.showName();

    运算后得到:bmw.

    这里通过apply(call也可以)强制把this指向了bmw这个对象。


    相关文章

      网友评论

          本文标题:关于this指向问题。

          本文链接:https://www.haomeiwen.com/subject/znizsxtx.html