Javascript 在JS中,可以为相同的属性分配getter和函数调用吗?

Javascript 在JS中,可以为相同的属性分配getter和函数调用吗?,javascript,Javascript,这能做到吗 a; // 1 a(); // function call 不同的提问方式是,括号中是否有getter 你好,憎恨者 我明白了这确实是可能的,尽管并不像我要求的那样 function a() { console.log('hi im in a function') } a.valueOf = function() { return 1; } a == 1; // > true a(); // > "hi im in a function" 但是我不会在

这能做到吗

a; // 1

a(); // function call
不同的提问方式是,括号中是否有getter

你好,憎恨者

我明白了这确实是可能的,尽管并不像我要求的那样

function a() {
  console.log('hi im in a function')
}

a.valueOf = function() {
  return 1;
}

a == 1; // > true

a(); // > "hi im in a function"

但是我不会在我的代码中使用它,也不会与任何编写类似代码的人一起工作。

不,你不能。值要么是数字,要么是函数,不能两者都是。不存在允许您为任意值赋予调用能力的运算符重载


(但是,您可以使用
valueOf
方法创建函数对象,该方法允许对象在某些上下文中被视为数字,请参见示例)。

请注意
a
的实际值不是1(
a===1
为false),只有在将函数转换为其他类型时才使用1。(这与真正具有实际价值的getter相反)是的,这进一步让它变得糟糕