Javascript将此传递给函数

时间:2019-03-24 15:18:10

标签: javascript variables this

我不习惯使用this并试图使一些简单的函数来回传递它。我不太确定javascript期望什么,但是我认为我做的不正确。

$(".search-result").each(function() {
    var x  = $(this).find('.past-positions ol').children()
    console.log(x)
    //this prints as expected
    pastJobs(this)
    // this does not
})

function pastJobs() {
    var x  = $(this).find('.past-positions ol').children()
    console.log(x)
    // this prints as undefined
}

我认为可以将this传递给函数,但是我认为我这样做的方式不正确。

我在做什么错了?

3 个答案:

答案 0 :(得分:4)

改为尝试pastJobs.call(this)

答案 1 :(得分:1)

实际上,这里pastJobs(this)是将词法上下文this作为参数传递,而不是将该上下文绑定到函数。

您可以使用函数bind来实现所需的功能:

pastJobs.bind(this)()

答案 2 :(得分:1)

PS> [enum]::GetNames($xlConstants) | Select @{ n='Name'; e={$_} }, @{ n='Number'; e={ $xlConstants::$_.Value__ } } Name Number ---- ------ xlAbove 0 xlFirst 0 xlDirect 1 # ... 您正在传递pastJobs(this)作为参数 并且您的函数不接受参数this。因此在function pastJobs()中进行$(this)确实是没有上下文的。

您可以调用函数pastJobs / .call(this).apply(this),然后调用它。 (bind仅绑定该对象,但不同于apply或call不会调用该函数。

请记住,bind()callapply对象之后以不同的方式接受参数。 this方法分别接受参数。 call()方法将参数作为数组。

您需要类似

apply()