首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用es6学习js

用es6学习js
EN

Stack Overflow用户
提问于 2015-11-26 09:37:47
回答 1查看 92关注 0票数 0

我有以下简单代码:

代码语言:javascript
复制
window.Foo = window.Foo || {};

((Foo) => {
  'use strict';

  Foo.select = Foo.select || {};

  Foo.select.init = (selector, options) => {
    ...
  };

  Foo.select.otherInit = () => {
    ...
  };

  $((e) => {
    Foo.select.init();
    Foo.select.otherInit();
  });

})(window.Foo);

由于我是一位首席执行官,所以我想知道几件事:

首先,愚蠢的一个:与其传递Foo,我可以在函数中通过this.Foo访问它吗?我想是的,这只是一种代码风格吗?

最后一行中的(window.Foo)是什么意思?有什么用?

最后,为什么要使用:

代码语言:javascript
复制
$((e) => {
  Foo.select.init();
  Foo.select.otherInit();
});

而不仅仅是:

代码语言:javascript
复制
Foo.select.init();
Foo.select.otherInit();

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-26 09:49:36

首先,愚蠢的一个:我可以通过函数内部的this.Foo来访问Foo,而不是传递Foo?我想是的,这只是一种代码风格吗?

是的,您可以通过this.Foo直接访问它,但只因为当前的函数范围绑定到window对象(因为您使用的是箭头函数)和因为Foowindow的一部分(可能是因为它是在全局范围中定义的)。

如果要在另一个对象内的函数调用中尝试此操作,this.Foo将失败。我不建议这样做,除非你有充分的理由这样做。

上下文。

(window.Foo)在最后一行是什么意思?有什么用?

整个构造(见下面)是一个生平:立即调用的函数表达式。您使用的是箭头函数,因此这也会绑定上下文(参见上面的要点)。

最后一部分(window.Foo)意味着调用使用参数window.Foo调用的函数,该参数在函数中可以作为Foo使用。

代码语言:javascript
复制
((Foo) => {
    ...
})(window.Foo);

最后,为什么要使用: $(E) => { Foo.select.init();Foo.select.otherInit();}; 而不仅仅是: Foo.select.init();Foo.select.otherInit();

这是一个jQuery函数调用,该函数在DOM准备就绪后执行。。一旦触发$(...)事件,将调用DOMContentLoaded中的函数。

如果不存在这种情况,则可以在DOM准备就绪之前执行代码(因此可能找不到这些函数中引用的DOM元素)。这取决于您将javascript代码放在何处(如果您将其放置在</body>之前,您应该是安全的)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33935056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档