2014-10-11 36 views
0

所以我解决了这个问题,我正在通过项目euler获得一个类,现在我需要使用对象来做这件事,而且我一直在搜谷歌,但希望得到一些关于我可能在哪里的建议出错了。正试图存储变量以供以后使用时,mianly fiboSeq似乎永远不可用。我只是称这个功能错了吗?任何建议或正确的方向来研究的一点是很好的。关于对象/调用函数的问题

function solution(){ 
    return { 
    fibo: function(limit, prev, curr){ 
     var fiboSeq = []; 
     for (curr = curr; curr < limit; curr = prev + curr){ 
     prev = curr - prev; 
     fiboSeq.push(curr); 
     } 
     return fiboSeq; 
    }, 

    filterEvens: function(index){ 
     var evens = []; 
     fiboSeq.forEach(function(value, index){ 
     if (value % 2 === 0){ 
      evens.push(value); 
     } 
     }); 
     return evens; 
    }, 

    sum: function(evens){ 
     sumEvens = 0; 
     evens.forEach(function(value, index){ 
     sumEvens += sumEvens 
     }); 
     return sumEvens; 
    } 
    } 
} 

var seqF = solution().fibo(100, 1, 2); 
var evenF = solution().filterEvens(seqF); 
var victoryD = solution().sum(evenF); 
console.log(victoryD); 

谢谢!

回答

0

fiboSeq位于当地社会fibo()。要从其他函数访问它,您应该将其作为参数传递或在返回的对象外定义它。

function solution(){ 
    var fiboSeq = []; 
    return { 
    fibo: function(limit, prev, curr){ 
     for (curr = curr; curr < limit; curr = prev + curr){ 
     prev = curr - prev; 
     fiboSeq.push(curr); 
     } 
     return fiboSeq; 
    }, 
    // ... 
    } 
+0

不,我认为这应该是基于实例。 – PHPglue 2014-10-11 23:33:38

+1

谢谢我把它移到了外面,并在我的测试中取得了进一步的进展,认为下一个障碍是我只需要将其他数组的变量声明移到外面。这个班3个星期,它似乎总是那么微小的东西,这一切都闹起来! – Nhare 2014-10-11 23:35:34

0

查看以下代码:

function solution(){ 
    this.fiboSeq = this.evens = []; 
    this.fibo = function(limit, prev, curr){ 
    for(var c=curr,l=limit,p=prev; c<l; c=p+c){ 
     p = c-p; this.fiboSeq.push(c); 
    } 
    return this; 
    } 
    this.filterEvens = function(){ 
    var fs = this.fiboSeq; 
    for(var i=0,l=fs.length; i<l; i++){ 
     if(fs[i] % 2 === 0){ 
     this.evens.push(fs[i]); 
     } 
    } 
    return this.evens; 
    } 
} 
var sol = new solution; 
var evenF = sol.fibo(100, 1, 2).filterEvens(); 
var eFl = evenF.length; 
+0

感谢您展示攻击它的另一种方式。在挖掘谷歌的同时,我在这里遇到了“这个”很多次,但还没有上课。这个例子将帮助我弄清楚它是如何工作的! – Nhare 2014-10-12 00:29:33

+0

'this'只是表示当前的实例,在这种情况下。 – PHPglue 2014-10-12 00:48:09