JavaScript - 变量/对象同时还是函数

5

是否可以创建一个同时返回字符串和函数的变量/对象?

> a
'Hello World'
> a()
2018-07-13T13:45:10.967Z

我看过一篇关于JavaScript对象默认方法的文章,但现在找不到了。

我认为应该是类似下面这样的内容:

// Pseudo code
const a = {
    toString: "Hello World",
    function: () => new Date(),
};

你试过了吗? - dave
@aquaballin 你是不是想问我是否测试我的“代码”?:) 当然,但结果是通过a.toStringa.function()返回的。我想用aa()获取值。 - Mateusz Jagiełło
2
你需要定义一个函数a,然后为该函数添加一个toString方法。 - Axnyff
1
我非常确定你试图做的是不可能的,Js中的变量确实可以具有不同的类型,但你必须明确地声明。 - Bruno Braga
不,一个值不能同时是函数和原始字符串。你需要这个做什么? - Bergi
显示剩余3条评论
1个回答

1
据我理解,仅当您需要该字符串时,以一种启用显式或隐式转换的方式使用变量才能实现此目的,例如:

const a = function () {
  return new Date()
};
a.toString = function() {
  return "Hello world";
}

console.log('' + a);
console.log(String(a));
console.log(a());


1
这仅适用于 console.log(String(a))。仅记录 a 将记录对象。 - Bergi
@bergi 感谢您指出我的错误。我之前认为这样做是可以的,因为在 SO 的代码片段中,如果您运行代码,则 console.log(a) 的输出将会是 Hello World。但是当我尝试在外部运行时,发现您是正确的。我已经纠正了我的回答。 - Nelson Teixeira

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接