javascript - JS 模式提供函数名称作为字符串

标签 javascript function design-patterns anti-patterns

最近,我发现自己将函数名称作为字符串参数传递给另一个函数,使用 typeof 检查它的存在,并在必要时调用它。

当我写这篇文章时,我意识到我可以只传递一个函数引用。

我的问题是,“将函数名称作为字符串传递”模式是否有通用名称?而且,这是一种反模式吗?我通常应该尽可能使用引用吗?

最佳答案

我不知道它有名字,但它绝对是一种反模式。这更难,而且实际上它对内存的占用比仅仅发送函数引用更糟糕。

function doThisThing() {}
var action = 'doThisThing';

你看,我实际上在内存中创建了两个东西,每个东西都有一个指针。

var action = function() {}

在这里,我在内存中创建了一个项目,而 action 只是指向它的指针。然后就非常容易了

if (action) action();

甚至更短

action && action();

仅仅传递引用就容易多了。只是:一个引用。它几乎没有任何开销,而且更容易。

关于javascript - JS 模式提供函数名称作为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33108012/

相关文章:

javascript - 下拉菜单在 Internet Explorer 中不起作用

java - 使用外观设计模式|缺点/解决方案/建议

带有继承的 C++ 工厂

function - Python 3 的 new.function 替换

c - 在c中的字符串左侧添加空格

c++ - 面向对象 C++ : Which pattern: 2 classes with the partly same methods

javascript - 如何使用 JavaScript 以编程方式选择 HTML 选项?

javascript - 使用 document.write 混淆电子邮件地址是否危险?

javascript - undefined 不是一个对象(评估 _this2.props.navigation.navigate)

python - 从 bash 脚本调用 python 函数