gpt4 book ai didi

javascript - 揭示模块模式 : func. apply(null, arr) 与 func.apply(this, arr) 其中 func 在匿名函数中

转载 作者:行者123 更新时间:2023-11-30 10:27:23 26 4
gpt4 key购买 nike

能否请您解释一下使用 func.apply(null, arr) 的区别?和 func.apply(this, arr)在下面的代码示例中?

var Foo = function() {
function useMe(a, b, c)
{
document.body.innerHTML =
'<p>a: ' + a + '<br>b: ' + b + '<br>c: ' + c + '</p>'
}

function go()
{
var arr = ['foo', 'bar', 'baz']
useMe.apply(null, arr)
}

return {
go: go,
useMe: useMe
}
}()

Foo.go()

来源:http://jsfiddle.net/YQsaJ/

var Foo = function() {
function useMe(a, b, c)
{
document.body.innerHTML =
'<p>a: ' + a + '<br>b: ' + b + '<br>c: ' + c + '</p>'
}

function go()
{
var arr = ['foo', 'bar', 'baz']
useMe.apply(this, arr) // USING this INSTEAD OF null
}

return {
go: go,
useMe: useMe
}
}()

Foo.go()

JSFiddle:http://jsfiddle.net/3DvtA/

我明白当null用作 apply 的第一个参数函数,全局对象,即 window用作 this useMe 的参数.对于像上面代码一样简单的用法,我们作为 apply 的第一个参数传递什么真的很重要吗?功能?

最佳答案

所有函数都有一个所谓的上下文。此上下文是一个对象,位于 this 变量中。

警告“Hello World”的示例:

function hello() {
alert(this.greeting);
}

hello.apply({greeting: "Hello World"});

您的函数不访问 this,因此在您的上下文中您指定 null 还是 this 并不重要。

从 ES 5 严格模式开始,window 不再是函数的标准上下文,相反,它包含值 undefined

关于javascript - 揭示模块模式 : func. apply(null, arr) 与 func.apply(this, arr) 其中 func 在匿名函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18945786/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com