.call(this)JavaScript中的习语

时间:2014-02-07 14:20:51

标签: javascript node.js passport.js

在某些JavaScript中,我看到:

var passport = require('passport')

function Strategy(options, verify) {
  //...

  passport.Strategy.call(this);
}

passport.Strategy.call(this);在做什么?

2 个答案:

答案 0 :(得分:3)

在该代码的上下文中,这实际上是一种执行超级构造函数的方法。例如,查看passport-local对象,护照本地类的原型继承自Strategy原型。实际上它是护照的“子类”。策略。当您创建passport.Local的新实例时,您还需要执行超级构造函数(passport.Strategy)。执行constructor.call(context)允许您在子类的上下文中执行超级构造函数。

答案 1 :(得分:1)

.call()函数是一个本机javascript函数,它将上下文传递给函数。在这种情况下,调用函数passport.Strategy()并传递this的上下文。

这意味着在passport.Strategy()函数中this对象引用第一个传递给.call()函数的变量。