Javascript函数组织
我不确定说“function x(){}”和“this.x=function(){}”之间的区别,但我必须制作一个面向对象的JavaScript,其布局如下:Javascript函数组织,javascript,oop,function,Javascript,Oop,Function,我不确定说“function x(){}”和“this.x=function(){}”之间的区别,但我必须制作一个面向对象的JavaScript,其布局如下: function PROJECT(){ ... ... ... this.main_call=function(...){ return this.recursive_call(...); } this.recursive_call=function(...){ ... var local,varia
function PROJECT(){
...
...
...
this.main_call=function(...){ return this.recursive_call(...); }
this.recursive_call=function(...){
...
var local,variables;
function helper(...,ref){
...
ref.recursive_call(...);
}
...
helper(...,this);
...
}
}
x=new PROJECT();
x.main_call(input);
我这里的问题是,这是否是一种好的样式,或者是否有某种方法可以调用helper函数(用于停止重复相同的代码),而无需传递“this”指针。我有点担心,因为helper函数已经访问了recursive_调用中的所有局部变量,但是如果我试图直接访问this.recursive_调用,它会抛出错误。在试图声明这个时,我也遇到了变量重写的问题。helper=function(…){…}。我不太明白您想做什么,但是您可以更改闭包。像这样的
function PROJECT(){
this.main_call=function(){
return recursive_call();
}
var local,variables;
function helper()
{
recursive_call();
}
function recursive_call(){
helper();
}
}
x=new PROJECT();
x.main_call(input);
this.recursive_call=function(...){
...
var local,variables;
var ref = this;
function helper(...){
...
ref.recursive_call(...);
}
...
helper(...);
...
}
如果这不适合您需要做的事情,您可以随时将递归函数更改为如下所示
function PROJECT(){
this.main_call=function(){
return recursive_call();
}
var local,variables;
function helper()
{
recursive_call();
}
function recursive_call(){
helper();
}
}
x=new PROJECT();
x.main_call(input);
this.recursive_call=function(...){
...
var local,variables;
var ref = this;
function helper(...){
...
ref.recursive_call(...);
}
...
helper(...);
...
}
退房
main\u调用
仅包装recursive\u调用
,则不需要它this
,而不是传递ref
this.recursive_call=(function(){
...
function helper(...){
...
this.recursive_call(...);
}
return function(...)
...
helper.call(this,...);
...
};
}).call(this);
这个
的实用性,这让我感觉更糟糕。尽管你必须经常问自己需要访问哪些对象,在哪里。如果在整个过程中使用这个没有意义,那么它就没有用处,不要使用它。”s就够了
<>你也可以考虑一些功能方面。例如,将helper函数传递到recursive\u call
以了解function name(){}
vsvar name=function(){}
我建议阅读以下相关问题:
你能把它改成while/for循环吗?递归通常很难读取和维护(这可能是您对当前代码感到不安的原因)。您仍然可以使用this.helper()调用的helper()函数,但重复该过程的决定是在循环逻辑中做出的