JavaScript中函数类的默认处理程序

JavaScript中函数类的默认处理程序,javascript,react-native,react-hooks,prototypejs,Javascript,React Native,React Hooks,Prototypejs,我想知道是否有可能让一个函数类有一个默认的调用方法。让我详细说明一下 function Foo(){ /*some logic*/ Foo.prototype.aletUser = function alertUser(message) { alert(message); } } 假设上面的代码是我的函数类(如果我对上述结构的命名错误,请告诉我),我实例化了其中一个结构 let param = new Foo(); 现在,我希望调用以下内容,并希望它调用我的原型Foo.a

我想知道是否有可能让一个函数类有一个默认的调用方法。让我详细说明一下

function Foo(){
  /*some logic*/
  Foo.prototype.aletUser = function alertUser(message) {
    alert(message);
  }
}
假设上面的代码是我的函数类(如果我对上述结构的命名错误,请告诉我),我实例化了其中一个结构

let param = new Foo();
现在,我希望调用以下内容,并希望它调用我的原型
Foo.alertUser

param('Hey There')
如何做到这一点?提前谢谢


我的方法背后有更多的洞察力


我正在使用React Native,我希望在函数中使用钩子。param('Hey There')但我没有主意,我知道如何使它与JavaScript类一起工作,但不幸的是钩子不能在类组件中调用。

回答您实际提出的问题,这是可能的,但可能不是一个好主意。一种方法是让
newfoo
创建一个函数,然后更改其原型(这通常不是一个好主意),如下所示:

函数Foo(){
//创建一个函数,将其原型更改为
//`Foo.prototype`并返回它
const retval=函数alertUser(参数){
控制台日志(param);
};
setPrototypeOf(retval,Foo.prototype);
返回返回;
}
//使`Foo.prototype`使用`Function.prototype`作为其原型
Foo.prototype=Object.create(Function.prototype);
Foo.prototype.constructor=Foo;
const param=new Foo();

param(“你好”)回答您实际提出的问题,这是可能的,但可能不是一个好主意。一种方法是让
newfoo
创建一个函数,然后更改其原型(这通常不是一个好主意),如下所示:

函数Foo(){
//创建一个函数,将其原型更改为
//`Foo.prototype`并返回它
const retval=函数alertUser(参数){
控制台日志(param);
};
setPrototypeOf(retval,Foo.prototype);
返回返回;
}
//使`Foo.prototype`使用`Function.prototype`作为其原型
Foo.prototype=Object.create(Function.prototype);
Foo.prototype.constructor=Foo;
const param=new Foo();

param(“你好”)
您需要
参数alertUser('Hey There')
。但在React或现代JS中,这感觉是错误的,这是创建“类”的“旧方法”,如果您想这样做,那么只需使用
class
关键字即可。(即使这样做,您通常也会将
Foo.prototype.alertUser
定义置于
Foo
函数之外。)我已经回答了您在下面实际提出的问题,但我建议您发布一个新问题,说明您对类组件的情况,并希望调用钩子。这里真正的解决方案可能不是找到将钩子调用硬塞进类组件生命周期的方法(它不可能正常工作)。因此,如果您显示了这种情况(在另一个问题中),我们可能可以帮助您解决它,而不必这样做。您需要
param.alertUser('Hey There')
。但在React或现代JS中,这感觉是错误的,这是创建“类”的“旧方法”,如果您想这样做,那么只需使用
class
关键字即可。(即使这样做,您通常也会将
Foo.prototype.alertUser
定义置于
Foo
函数之外。)我已经回答了您在下面实际提出的问题,但我建议您发布一个新问题,说明您对类组件的情况,并希望调用钩子。这里真正的解决方案可能不是找到将钩子调用硬塞进类组件生命周期的方法(它不可能正常工作)。因此,如果你展示了这种情况(在另一个问题中),我们可能可以帮助你解决它,而不必这样做。你也可以做3。使用组合,你就可以混合使用函数式和基于类的组件。@Keith-是的,我有这样的印象,无论出于什么原因,这是不可能的,但可能只是被忽略了。希望OP能发布另外一个问题,我们可以帮助他们解决这个问题——也许是通过作文。:-)你也可以做3个。使用组合,你就可以混合使用函数式和基于类的组件。@Keith-是的,我有这样的印象,无论出于什么原因,这是不可能的,但可能只是被忽略了。希望OP能发布另外一个问题,我们可以帮助他们解决这个问题——也许是通过作文。:-)