调用不带括号的函数

今天有人告诉我,可以不带括号地调用一个函数。我能想到的唯一方法是使用类似apply或的函数call。


f.apply(this);

f.call(this);

但是,这些都需要用括号括起来,apply然后call放在第一个平方上。我还考虑了将函数传递给某种事件处理程序的想法,例如setTimeout:


setTimeout(f, 500);

但是,问题就变成了“如何在setTimeout没有括号的情况下调用?”


那么这个谜题的解决方案是什么?如何在不使用括号的情况下调用Javascript中的函数?


绝地无双
浏览 531回答 3
3回答

温温酱

最简单的方法是与new运算符:function f() {  alert('hello');}new f;尽管这是非常规和不自然的,但它确实有效并且完全合法。该new如果不使用参数,运营商不需要括号。

慕容森

您可以使用getter和setter。var h = {  get ello () {    alert("World");  }}仅使用以下命令运行此脚本:h.ello  // Fires up alert "world"编辑:我们甚至可以争论!var h = {  set ello (what) {    alert("Hello " + what);  }}h.ello = "world" // Fires up alert "Hello world"编辑2:您还可以定义无需括号即可运行的全局函数:window.__defineGetter__("hello", function() { alert("world"); });hello;  // Fires up alert "world"并带有参数:window.__defineSetter__("hello", function(what) { alert("Hello " + what); });hello = "world";  // Fires up alert "Hello world"免责声明:正如@MonkeyZeus所说:无论您的意图多么好,您都绝不能在生产中使用这段代码。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript