Javascript JS:可能吗;某物(arg)“;及;我的“我的方法(arg)”;同时
我知道如何创建一个函数Javascript JS:可能吗;某物(arg)“;及;我的“我的方法(arg)”;同时,javascript,function,oop,methods,Javascript,Function,Oop,Methods,我知道如何创建一个函数something(arg) 我知道如何使用函数something.my_方法(arg) 当something(arg)和something.my_method(arg)都存在时,是否可以编写代码 像这样 存档: 控制台中的输出: Function result 123 Function result 234 这是JavaScript,有很多方法可以实现 编辑:我真的考虑过这个问题,并试图想象其他方法来做同样的事情,但实际上我找不到任何方法。有一个@elcodedocle
something(arg)
我知道如何使用函数something.my_方法(arg)
当something(arg)
和something.my_method(arg)
都存在时,是否可以编写代码
像这样存档: 控制台中的输出:
Function result 123
Function result 234
这是JavaScript,有很多方法可以实现
编辑:我真的考虑过这个问题,并试图想象其他方法来做同样的事情,但实际上我找不到任何方法。有一个@elcodedocle,我想了想,但很接近,但不是你问的,或者其他任何解决方案都是像他或我下面建议的那样重写
快速而肮脏的方法是创建函数:
something = function(arg) {
console.log('Function result', arg);
}
something.my_method = function(arg) {
console.log('Method result', arg);
}
function something(arg) {
something.my_method = function (arg) {
console.log('Method result', arg);
}
console.log('Function result', arg);
}
然后创建一个包含另一个函数的属性:
something = function(arg) {
console.log('Function result', arg);
}
something.my_method = function(arg) {
console.log('Method result', arg);
}
function something(arg) {
something.my_method = function (arg) {
console.log('Method result', arg);
}
console.log('Function result', arg);
}
尽管我必须警告您,如果您需要做这样的事情,而不是出于纯粹的智力和学术好奇心,那么您可能需要重新考虑代码的设计。这种“把戏”从来都不是优雅的,通常会误导你未来的代码读者(可能在六个月内成为你)。简而言之,一个功能:
something = function(arg) {
console.log('Function result', arg);
}
something.my_method = function(arg) {
console.log('Method result', arg);
}
function something(arg) {
something.my_method = function (arg) {
console.log('Method result', arg);
}
console.log('Function result', arg);
}
要在对象上定义方法,可以扩展其
原型。由于something
是一个函数,因此您希望覆盖函数
原型:
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
然而,一个更有趣的问题是,究竟为什么要这样做:-)当然,只需在第一个属性中添加一个属性即可。函数是对象,所有对象都可以有属性和方法。不过,不要重写它,像something.my_method=function(){}
那样分配它,但如果在something()
之前调用something.my_method()
则会得到TypeError:something.my_方法不是函数
错误。所以这基本上只是对另一个QND解决方案的重写。@zmo,没错。但是根据规范,它是有效的。我有jQuery方法$.fn.scrollport()
,用于启动滚动,还有$.fn.scrollport\u link()
用于创建滚动链接。我认为最好创建$.fn.scrollport.link()
而不是$.fn.scrollport\u link