Закрытие jQuery и доступ к свойству объекта - PullRequest
1 голос
/ 29 июня 2009

Может кто-нибудь сказать мне, как получить доступ к переменной "а" здесь:

var test = {
   a: 3,
   init: function() {
       $("body").click(function() {
          alert(a);
       });
   }
};

test.init();

Это тоже не работает: alert (this.a);

Заранее спасибо.

Ответы [ 5 ]

2 голосов
/ 30 июня 2009

На самом деле, я предпочитаю это: self настройка и инициализация:


function createX() {
    var self = {
        init: function() {
            $("body").click(this.doit);
        },

        doit: function(data, b) {
            alert(self.testing());
        },

        testing: function() {
            return 4;
        }
    }
    self.init();
    return self;
}


$(function() {
    createX();
});

0 голосов
/ 30 июня 2009

Хорошо, это решает вторую проблему:

function test() {
    var self;
    return {
        init: function() {
            self = this;
            $("body").click(this.doit);
        },

        doit: function(data, b) {
            alert(self.testing());
        },

        testing: function() {
            return 4;
        }
    }
}


$(function() {
    var x = test();
    x.init();
});

0 голосов
/ 29 июня 2009

Добавить собственную ссылку: -

var test = {
   a: 3,
   init: function() {
       var self = this
       $("body").click(function() {
          alert(self.a);
       });
   }
};
0 голосов
/ 30 июня 2009

Хорошо, это работает:

var test = {
    a: 3,
    init: function() {
        var self = this;
        $("body").click(function() {
            self.doit();
        });
    },

    doit: function() {
        var self = this;
        alert(self.a);
    }
};

но мне нужно повторно использовать функцию doit, так что теперь это не работает:


var test = {
    a: 3,
    init: function() {
        var self = this;
        $("body").click(self.doit);
    },

    doit: function() {
        var self = this;
        alert(self.a);
    }

};
0 голосов
/ 29 июня 2009

Вы должны обратиться к объекту:

test.a
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...