在Javascript中应用/调用方法:第一个参数“this”是什么?

时间:2015-04-07 03:35:38

标签: javascript function call apply invocation

我对正确使用apply或call方法感到困惑。 我知道apply是将数组传递给函数,并且调用是将字符串传递给函数。 例如下面的代码,"这"真的与代码有什么关系?如果它与此代码无关,那么任何人都可以给我一个例子,当这个"这个"正在适当地实施?

function myFunction(a, b) {
    return a * b;
}
myArray = [10,2];
myFunction.apply(this, myArray);

3 个答案:

答案 0 :(得分:1)

这是该功能的上下文。如果函数内部有this.something,它将从该上下文对象访问该特定属性。

    

    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.

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

答案 1 :(得分:0)

thisApply/Call函数的范围。一个例子是:

function test() {
    alert(this.a);
}

(function () {
    this.a = "test";
    test();//test

    var self = this;

    (function () {
        this.a = "Foo";
        test();//Foo
        test.apply(self, []);//test
    }());

}());

答案 2 :(得分:0)

第一个参数将是函数中的this

即:

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"}