2011-11-14 63 views
0

我試圖使用命名空間來更好地組織我的網站非常複雜的代碼。我有:在原型中使用Class.Create ...無法訪問內部函數

var myApp = {}; 

myApp.fp = { 
    brandCarousel: null, 

    init: function() { 
     // initialize brand carousel 
     this.brandCarousel = new Pluit.Carousel('brand-scroll-outer', { circular: false }); 
    } 
}; 

document.observe("dom:loaded", function() { myApp.fp.init(); }); 

我正在使用原型1.7和Pluit Carousel庫。

如果我試圖通過鍵入調用Pluit旋轉木馬的方法(MOVENEXT)之一:

myApp.fp.brandCarousel.moveNext() 

我得到一個JavaScript錯誤:

TypeError: Object # has no method 'moveNext'

有什麼我得到錯誤,當談到範圍或命名空間?我怎樣才能訪問這個內部功能?

回答

0

沒有關於您的特定示例看起來特別錯誤(除了它在myAppmasApp(打字錯誤?)之間切換)。這裏有一個精簡,假爲例,說明你的方法工作(和你的問題一定是在另一個位置):

var myApp = {}; 

myApp.fp = { 
    brandCarousel: null, 

    init: function() { 
     // initialize brand carousel 
     this.brandCarousel = new (function() { 
      this.moveNext = function() { 
       alert("moving!"); 
      }; 
     }) 
    } 
}; 

myApp.fp.init() 
myApp.fp.brandCarousel.moveNext() 

上面的代碼提示moving!預期。

+0

嗯...我認爲這一定與Pluit旋轉木馬的設置有關。能夠對腳本進行一些破解,使其能夠做到我所需要的。謝謝! – Rebecca

+0

另外 - 修正了錯字。謝謝。 – Rebecca