0

我经常看到这种情况,但我不确定它的目的或优点是什么(如果有的话)。将一个函数或一组函数放在对象内,作为变量的值。

var variableName = { (function() {DO STUFF} )}
4

2 回答 2

0

JavaScript 使用全局变量。这意味着每个脚本都无法访问和修改所有变量,并可能覆盖具有相同名称的变量。为了保护您自己的脚本,您可以使用全局变量(如 var MyScript=... )并将所有内容写入其中。举个例子,我编写了一个简单的脚本来在 html 文件之间导航。您可以看到一个名为“Navi”的变量,它封装了里面的所有内容。它包含变量和函数,并且(在这种情况下)只有返回的名称才允许访问。如果我在 Navi 中编写下一个和上一个函数,它们可能会在其他一些脚本中被覆盖。

var Navi = (function(){
    var currentPage = 0;
    var pages = [];
    pages[0] = "first.html";
    pages[1] = "second.html";
    pages[2] = "third.html";

    var next = function next(){
        if(currentPage < pages.length - 1){
            currentPage++;
            location.href = pages[currentPage];
        }
    };

    var previous = function previous(){
        if(currentPage > 0){
            currentPage--;
            location.href = pages[currentPage];
        }
    };

    return{
        next: next,
        previous: previous,
        currentPage: currentPage,
        pages: pages
    };
})();

要从 html 文件中调用它:

<a href="javascript:Navi.previous();">previous page</a>
<a href="javascript:Navi.next();">next page</a>

至今。

于 2013-05-14T08:18:40.897 回答
0

基本上,如果函数有一个名字,你可以用它来调用它

变量名.function(args);

在这些类型的对象中,您可以设置将始终存储在对象中的方法,直到您自己刷新或重置数据,如果您想让事物动态化但仍要记住输入数据,这很方便。

你可以像这样制作一个单例对象:

var Singleton = {

    data1 : '',

    functionName : function() {

        this.data1 = document.getElementById('formfield1').value;    

    }

}

所以如果你有一个 id 为 formfield1 的表单域

<input type="text" id="formfield1" value="" />

例如,当您将此功能绑定到提交按钮时

<button onclick="Singleton.functionName();">Save</button>

您的信息将存储在对象的 data1 变量中。

它还有很多东西,但它是一种保存数据的好方法,希望它有所帮助:)

于 2013-05-14T08:14:57.663 回答