Apply/Call method in [removed] What is the first arguments “this”?

后端 未结 3 1840
失恋的感觉
失恋的感觉 2021-01-25 05:22

I am confused about using apply or call method correctly. I know that apply is passing an array to the function and call is passing strings to a function. For example the code b

相关标签:
3条回答
  • 2021-01-25 05:36

    this is the scope of the Apply/Call function. An example is:

    function test() {
        alert(this.a);
    }
    
    (function () {
        this.a = "test";
        test();//test
    
        var self = this;
    
        (function () {
            this.a = "Foo";
            test();//Foo
            test.apply(self, []);//test
        }());
    
    }());
    
    0 讨论(0)
  • 2021-01-25 05:36

    The first argument will be the this in your function.

    ie:

    var p = {"name":"someone"};
    function myFunction(a, b) {
         console.log(this);
         return a*b;
    }
    var myArray = [10,2];
    myFunction.apply(p, myArray); //log output shows {"name":"someone"}
    
    0 讨论(0)
  • 2021-01-25 05:38

    It's the context for the function. If you have this.something inside the function, it will access that particular property from that context object.

        
    
        function foo(bar) {
            this.bar = bar;
        }
        
        foo.apply(this, ['Hello']);    //calling foo using window as context (this = window in global context in browser)
        console.log(this.bar);         //as you can see window.bar is the same as this.bar
        console.log(window.bar);
        
        var ctx = {};    //create a new context
        
        foo.apply(ctx, ['Good night']);
        console.log(ctx.bar);        //ctx now has bar property that is injected from foo function
    Open up your dev console to see result.

    See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply

    0 讨论(0)
提交回复
热议问题