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相反)是的,这进一步让它变得糟糕