您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

调用不带括号的函数

调用不带括号的函数

有多种不带括号的函数调用方法

假设您已定义此函数

function greet() {
    console.log('hello');
}

然后,请按照以下方法greet不带括号的情况下进行调用

使用new可以调用不带括号的函数

new greet; // parentheses are optional in this construct.

从MDN的newoprator:

 new constructor[([arguments])]

toString并且valueOf是特殊的方法:在需要进行转换时会隐式调用它们:

var obj = {
    toString: function() {
         return 'hello';
    }
}

'' + obj; // concatenation forces cast to string and call to toString.

您可以(ab)使用此模式调用greet而不带括号:

'' + { toString: greet };

或搭配valueOf

+{ valueOf: greet };

valueOf并且toString实际上是从@@ toPrimitive方法调用的(自ES6起),因此您也可以实现 方法

+{ [Symbol.toPrimitive]: greet }
"" + { [Symbol.toPrimitive]: greet }
其他 2022/1/1 18:15:28 有477人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶