为什么有人会使用这种模式?

时间:2014-02-12 18:05:09

标签: javascript

我在一个剧本中读了一遍,但我不明白它的好处。

(function () {}).call(this); 

另外,我试过运行它,

(function () { console.log('Hello World') }).call(this); 

但它没有打印任何东西。

即使调用此(function () { console.log('Hello World') })()也没有打印任何内容。怎么了?

2 个答案:

答案 0 :(得分:2)

当我希望我的代码在浏览器窗口中工作时,我使用this(在这种情况下this引用window a {{ 3}}(在这种情况下this引用工作者实例)。

.call(this)适用于此,但当然你可以采用不同的方式。例如,这也可以:

(function(root) {

    root.MyLibrary = MyLibrary;

}(this));

与往常一样,不止一种方法可以使这只众所周知的猫皮肤。

答案 1 :(得分:0)

可能作者希望改变IIFE的背景。传递this毫无意义,因为即使没有window,它也会引用call

这样的事情会改变范围内this的含义:

(function () { console.log('Hello World', this) }).call({foo:1});

然而,我仍然没有看到这一点,因为你可能会这样做:

(function (fooObj) { console.log('Hello World', fooObj) })({foo:1});

我想说的更常见。