Javascript中的Apply/Call方法:第一个参数是什么;这是什么;?

Javascript中的Apply/Call方法:第一个参数是什么;这是什么;?,javascript,function,call,apply,invocation,Javascript,Function,Call,Apply,Invocation,我对正确使用apply或call方法感到困惑。 我知道apply将数组传递给函数,而call将字符串传递给函数。 例如下面的代码,“这”与代码有什么关系?如果它与这段代码无关,那么有人能给我举一个“this”正确实现的例子吗 函数myFunction(a,b){ 返回a*b; } myArray=[10,2]; 应用(这个,myArray); 此是应用/调用功能的范围。例如: function test() { alert(this.a); } (function () { t

我对正确使用apply或call方法感到困惑。 我知道apply将数组传递给函数,而call将字符串传递给函数。 例如下面的代码,“这”与代码有什么关系?如果它与这段代码无关,那么有人能给我举一个“this”正确实现的例子吗

函数myFunction(a,b){
返回a*b;
}
myArray=[10,2];
应用(这个,myArray);

应用/调用
功能的范围。例如:

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

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

    var self = this;

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

}());

第一个参数是函数中的
this

即:


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


函数foo(bar){
这个.bar=bar;
}
应用(这个,['Hello'])//使用窗口作为上下文调用foo(此=浏览器中全局上下文中的窗口)
console.log(this.bar)//如您所见,window.bar与this.bar相同
console.log(window.bar);
var ctx={}//创建一个新的上下文
申请(ctx,[晚安]);
控制台日志(ctx.bar)//ctx现在具有从foo函数注入的bar属性

打开您的开发控制台以查看结果。
这是
将在函数内部引用的内容。您可能希望引用以下内容:
调用
不会“将字符串传递给函数”,它传递单个参数或任何类型。无论如何,
这个
参数执行文档中所说的操作。读一读。如果您正在调用的函数未使用此,则可以传递0、null、undefined或“123”或任何您想要的信息。非常感谢!这是一个很好的例子!
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"}