复习 JavaScript 关键字 this

this

this是js的一个关键字,只能在函数内部使用,在函数运行时候自动生成的内部对象,表明函数运行时候的做用域指向,使用频率极高!app

经常使用的用法与做用域指向

  1. 函数调用:js里面规定当一个函数并不是某一个对象,直接调用的时候,称之为函数调用,此时this指向全局对象Global。函数

    var t = 1;
    function test(){
        console.log(this.t)
    }
    test() //1
  2. 方法调用:当一个函数做为一个对象的属性调用时候([fn]下标表达式或者.fn点表达式)称之为方法调用,此时this指向这个对象。this

    var t =1;
    var obj= {
         t:2,
         test :function(){
             console.log(this.t)
         }
    }
    obj.test() // 2
  3. 做为构造函数调用:var test = new fn() 的方式 称fn为test的构造函数,new的过程当中构造函数的this对象的属性和方法将被加到新对象的属性上code

    function fn(){
            this.t = 1
        }
        var test = new fn();
        test.t // 1
        //fn的this对象会被加到新生成的test对象上

4:apply,call,bind方式调用:apply,call,bind均可以改变一个函数运行时候的this指向。对象

var t = 1
var test = function(){
    console.log(this.t)
}
test() //1
test.call({t:2}) //2
test.apply({t:3})//3
test.bind({t:4})()//4

关于bind的分析,能够看另外一篇文章:bind方法分析与实现作用域

看完了上面4种调用方式能够得出一个结论this指向的做用域永远是函数运行时候决定的io

相关文章
相关标签/搜索