为了账号安全,请及时绑定邮箱和手机立即绑定

调用不带括号的函数

调用不带括号的函数

绝地无双 2019-10-14 14:12:31
今天有人告诉我,可以不带括号地调用一个函数。我能想到的唯一方法是使用类似apply或的函数call。f.apply(this);f.call(this);但是,这些都需要用括号括起来,apply然后call放在第一个平方上。我还考虑了将函数传递给某种事件处理程序的想法,例如setTimeout:setTimeout(f, 500);但是,问题就变成了“如何在setTimeout没有括号的情况下调用?”那么这个谜题的解决方案是什么?如何在不使用括号的情况下调用Javascript中的函数?
查看完整描述

3 回答

?
温温酱

TA贡献1752条经验 获得超4个赞

最简单的方法是与new运算符:


function f() {

  alert('hello');

}


new f;

尽管这是非常规和不自然的,但它确实有效并且完全合法。

new如果不使用参数,运营商不需要括号。


查看完整回答
反对 回复 2019-10-14
?
慕容森

TA贡献1853条经验 获得超18个赞

您可以使用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所说:无论您的意图多么好,您都绝不能在生产中使用这段代码。


查看完整回答
反对 回复 2019-10-14
  • 3 回答
  • 0 关注
  • 530 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号