1

我正在编写一个使用 YUI3 来满足所有 JS 需求的 Web 应用程序。我需要诸如工具提示、其内容由 AJAX 查询确定的工具提示、切换按钮等功能。

我不确定谁来构建一个架构来实现这一切。我采取了以下方法

var Myapp = function(){

    this.toggleButton(node,config)
    {
        YUI().use(....,function(Y){
            //code to convert NODE into a toggle button;

        });
    }
    return this;
};

然后在我的应用程序中,我只需通过调用将所有按钮转换为切换按钮

var app = Myapp(); 
app.toggleButton(Y.all('.toggle-buttons'),{'text1':'TOGGLE_ME','text2':'TOGGLED_ME'});

这一切都有效。但我想从更有经验的开发人员那里了解这种方法是否存在根本性的问题。

这是使用 JavaScript 的好方法吗?

4

2 回答 2

3

return this;

这是不必要的,因为函数构造函数this默认返回。

var app = Myapp();

您忘记在new Myapp()没有new关键字的情况下调用this将是窗口对象,并且您正在有效地写入全局范围。

于 2011-04-18T20:46:05.280 回答
0

您的代码中有一个基本问题:

var MyApp = function(){

    this.toggleButton(node,config)
    {
     ...

您没有为MyApp. 相反,您尝试在每次实例化它时调用toggleButton 。它应该失败,因为该函数未定义


在您的情况下,不需要类定义和实例化,因为MyApp它被用作实用程序。

您可以定义MyApp为静态对象:

var MyApp = {
    toggleButton: function toggleButton() {
        // your code
    }
};

您可以通过以下方式在任何地方使用它:

MyApp.toggleButton();
于 2011-09-13T03:35:39.263 回答