Как правильно работать _around_ постоянство Javascript? - PullRequest
0 голосов
/ 01 июня 2009

Существует базовое постоянство Javascript VAR / и т.д. Вы вызываете функцию / метод, и в следующий раз, когда вы вызываете ту же функцию / метод, она содержит данные за последний раз.

Вы можете удалить переменные, когда закончите с ними, но это устраняет преимущество повторного использования кода для этого экземпляра.

Итак, каков правильный способ написания кода, который можно использовать повторно на разных элементах внутри одной страницы.

Поэтому мне нужна возможность писать код, чтобы я мог указывать его на несколько различных элементов, а затем взаимодействовать с этим кодом, выделенным для каждого элемента.

Так что в PHP (в качестве примера) я бы сделал:

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

в этом случае это один и тот же код, работающий в трех отдельных областях. Как я могу сделать это правильно с JS. Даже использование JQuery Extain () доставляет мне проблемы.

Спасибо.

Ответы [ 4 ]

7 голосов
/ 01 июня 2009

Используйте ключевое слово var при определении локальных переменных (в противном случае они будут по умолчанию глобальными).

function foo() {
    var i;
    // code code code code
}
3 голосов
/ 01 июня 2009

Чтобы создать экземпляр в 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);
1 голос
/ 01 июня 2009

Вы можете присвоить пространству имен свой JavaScript, чтобы сделать его очень похожим на то, что вы ищете. Смотрите ниже пример. Похоже, ваша проблема связана с использованием глобальных переменных, где вы хотите использовать локальные переменные, хотя - то есть вы объявляете var myvariable; за пределами вашей функции, но только хотите использовать его и забыть в своей функции. В этом случае объявите переменную внутри вашей функции, чтобы сделать ее локальной.

var MyNameSpace = function() {
    return {
        sayhello : function() {
            alert("hello");
        },
        saygoodbye : function() {
            alert("see ya");
        }
    };
}();
0 голосов
/ 01 июня 2009

Звучит так, будто вы ищете возможность иметь экземпляры класса и иметь личные данные, связанные с каждым экземпляром.

Вы можете сделать это, используя следующую технику:

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();  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...