我知道如何创建一个函数something(arg)
something = function(arg) {
console.log('Function result', arg);
}
我知道如何用函数something.my_method(arg)
something = {
my_method: function(arg) {
console.log('Method result', arg);
}
}
是否可以编写代码,something(arg)
和something.my_method(arg)
是否存在?
喜欢这个
在档案中:
// Needed code
something(123)
something.my_method(234)
控制台输出:
Function result 123
Function result 234
答案 0 :(得分:1)
嗯,这是javacript,有很多方法可以做到。
编辑:我实际上想过这个,并试图想象其他方式做同样的事情,实际上我找不到任何东西。我想到了@elcodedocle,但是它很接近,但不是你要求的,或者其他任何解决方案都是像他或我喜欢的那样重写。
快速而肮脏的方法是创建你的功能:
something = function(arg) {
console.log('Function result', arg);
}
然后创建一个包含其他函数的属性:
something.my_method = function(arg) {
console.log('Method result', arg);
}
虽然我必须警告你,如果你需要做除了纯粹的知识和学术好奇之外的其他事情,你可能想重新考虑代码的设计。那种"技巧"永远不会优雅,并且通常会误导你未来的代码阅读器(可能在六个月内你)。
答案 1 :(得分:0)
一个功能简短:
function something(arg) {
something.my_method = function (arg) {
console.log('Method result', arg);
}
console.log('Function result', arg);
}
答案 2 :(得分:0)
要在对象上定义方法,可以扩展其prototype
。由于something
是一个函数,因此您想要覆盖Function
原型:
Function.prototype.my_method = function(arg) {
console.log("My method result", arg);
}
function something(arg) {
console.log("My function result", arg);
}
something(123);
something.my_method(345)
输出:
My function result 123
My method result 345
然而,一个更有趣的问题是为什么你想要这样做: - )