在原型中使用Class.Create ...无法访问内部函数

时间:2011-11-14 22:32:46

标签: javascript oop namespaces prototypejs

我正在尝试使用命名空间来更好地组织我的网站非常复杂的代码。我有:

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 Carousels方法之一(moveNext)
myApp.fp.brandCarousel.moveNext()

我收到JavaScript错误:

  

TypeError:对象#没有方法' moveNext'

在范围或命名空间方面,我有什么问题吗?如何访问此内部功能?

1 个答案:

答案 0 :(得分: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!

相关问题