当前位置: 首页 > 面试题库 >

Javascript中的函数重载-最佳做法

金霄
2023-03-14
问题内容

用JavaScript伪造函数重载的最佳方法是什么?

我知道不可能像其他语言一样重载Javascript中的函数。如果我需要一个函数有两个用途foo(x)foo(x,y,z)这是最好的/优选的方法:

  1. 首先使用不同的名称
  2. 使用类似的可选参数 y = y || 'default'
  3. 使用参数数量
  4. 检查参数类型
  5. 或如何?

问题答案:

使用参数进行函数重载的最佳方法是不检查参数长度或类型;检查类型只会使您的代码变慢,并且您可以享受数组,空值,对象等的乐趣。

大多数开发人员所做的就是将对象作为其方法的最后一个参数。该对象可以容纳任何东西。

function foo(a, b, opts) {
  // ...
  if (opts['test']) { } //if test param exists, do something.. 
}


foo(1, 2, {"method":"add"});
foo(3, 4, {"test":"equals", "bar":"tree"});

然后,您可以在方法中以任何方式处理它。[切换,if-else等。]



 类似资料:
  • 问题内容: 有一些类似的话题,但我找不到一个有足够答案的。 我想知道Java中构造函数重载的最佳实践是什么。关于这个问题我已经有了自己的想法,但我想听听更多的建议。 我指的是简单类中的构造函数重载和继承已重载类(意味着基类具有重载构造函数)时的构造函数重载。 问题答案: 虽然没有“官方指导方针”,但我遵循亲干原则。使重载构造函数尽可能简单,最简单的方法是它们只调用this(…)。只需要检查一次参数

  • 问题内容: 经典(非js)重载方法: Javascript不允许使用同一个名称定义多个功能。这样,这样的事情就会出现: 除了传递带有重载的对象之外,JavaScript中是否有更好的解决方法来实现函数重载? 传递重载会很快导致函数变得过于冗长,因为每个可能的重载都需要一个条件语句。使用函数来完成那些条件语句的内部会导致带有范围的棘手情况。 问题答案: Javascript中的参数重载有多个方面:

  • 构造函数也可以像任何其他方法一样重载,我知道这一事实。由于一项任务,我决定使用具有多个构造函数的抽象超类: 抽象超类: 为了访问这些构造函数中的每一个,我还需要子类中的多个构造函数。 泡泡ort.java: 在这种情况下,子类的每个构造函数都立即调用超类的构造函数。我突然想到,我可以再次引用自己的构造函数并传递值: 这样做将允许我省略抽象超类中的3个重载构造函数,但会强制每个子类遵循相同的模式。

  • 问题内容: 我现在大约有7个Javascript文件(由于使用了各种jQuery插件)和4-5个CSS文件。我对处理这些问题的最佳做法感到好奇,包括应该在文档中的何处加载它们?YSlow告诉我,如果可能的话,应在末尾包含Javascript文件。身体的尽头?它提到的问题似乎在于他们是否编写内容。我所有的Javascript文件都是函数和jQuery代码(在ready()时全部完成),因此应该可以。

  • 问题内容: 我想知道构建和存储ID的最佳做法是什么。几年前,一位教授以社会保险号为例,向我讲述了身份证明系统构造不佳的危险。特别是,由于SSN没有错误检测功能,因此无法分辨9位数字的字符串和有效的SSN之间的区别。现在,政府机构需要“姓氏+ SSN”或“生日+ SSN”之类的信息来跟踪您的数据并确保对其进行验证。另外,根据您的出生地,您的社会保险号是可以预测的。 现在,我正在建立一个用户数据库…,

  • 问题内容: 我整理了一个非常类似于flickr照片流功能的脚本。两个缩略图彼此相邻,当您单击下一个或上一个链接时,下一个(或上一个)两个图像就会滑入其中。 当前,页面加载时将加载两个图像。第一次使用nxt / prv时,随后的两个图像或前两个图像通过ajax加载,第一个图像的ID在url中传递,而两个新图像的HTML通过ajax返回并显示。 足够简单,但是我不得不考虑在连接速度慢或服务器负载重的情