0

Javascript vars / etc具有基本的持久性。您调用一个函数/方法,下次调用相同的函数/方法时,它会保存上次的数据。

您可以在使用完这些变量后删除它们,但这消除了对该实例再次使用代码的优势。

那么在同一页面内的不同元素上编写可重用的代码的正确方法是什么。

因此,我需要编写代码的能力,以便我可以将它指向几个不同的元素,然后与为每个元素隔离的代码进行交互。

所以在 PHP 中(例如)我会这样做:

$element1 = new MyClass();
$element2 = new MyClass();
$element3 = new MyClass();

在这种情况下,它是在三个隔离范围内运行的相同代码。我怎样才能用 JS 正确地做到这一点。即使使用 jQuery 的 extend() 也会给我带来问题。

谢谢。

4

4 回答 4

7

定义局部变量时使用var关键字(否则它们将默认为全局变量)。

function foo() {
    var i;
    // code code code code
}
于 2009-06-01T13:37:07.033 回答
3

要在 JavaScript 中创建实例,您需要编写一个构造函数,并使用 new 调用它。例如:

function MyClass( somevalue ) {
   this.somevalue = somevalue;
   this.somefunction = function() {
     alert(somevalue);
   }
}

var instance1 = new MyClass(1);
var instance2 = new MyClass(2);
var instance3 = new MyClass(3);
于 2009-06-01T13:44:51.013 回答
1

您可以命名您的 JavaScript 以使其与您所追求的非常相似。请参阅下面的示例。听起来您的问题确实与在您想使用局部变量的地方使用全局变量有关 - 即您声明 var myvariable; 在您的功能之外,但只想在您的功能中使用它并忘记它。在这种情况下,请在函数中声明变量以使其成为本地变量。

var MyNameSpace = function() {
    return {
        sayhello : function() {
            alert("hello");
        },
        saygoodbye : function() {
            alert("see ya");
        }
    };
}();
于 2009-06-01T13:38:08.687 回答
0

听起来您正在寻找的是拥有类实例并拥有与每个实例相关联的私有数据的能力。

您可以使用以下技术执行此操作:

function Foo()
{
    // Member variable only visible inside Foo()

    var myPrivateVar;       

    // Function only visible inside Foo()

    var myPrivateFunction = function() 
                            { 
                                alert("I'm private!");
                            }

    // Member variable visible to all

    this.myPublicVar = "Hi, I'm public!";

    // Function visible to all

    this.myPublicFunction = function()   
                            {
                                myPrivateVar = "I can set this here!";
                            }
}

您可以使用以下语法创建和使用其中之一:

var myFoo = new Foo();

myFoo.myPublicVar = "I can set this!";
myFoo.myPublicFunction();  
于 2009-06-01T14:21:47.177 回答