Получить значение параметра объекта внутри функции jQuery внутри метода объекта - PullRequest
0 голосов
/ 30 декабря 2011

У меня есть это:

function test1()
{
    this.count = 0;
    this.active = 0;
    this.enable = function () {this.active = 1;}
    this.disable = function () {this.active = 0;}
    this.dodo = function ()
                {
                    $("html").mousemove(function(event) {
                        // I want to get here the "active" param value;                 
                    });
                }
    this.enable();
    this.dodo();
}

instance = new test1();
instance.disable();

Допустим, я хочу проверить активный параметр класса test1 в месте с комментариями.Как я могу получить это там?Спасибо!

Ответы [ 3 ]

2 голосов
/ 30 декабря 2011

Если вы хотите получить доступ ко всем переменным-членам более высокой области, вам просто нужно сохранить указатель this из этой области в локальную переменную, чтобы вы могли использовать его внутри другой области:

function test1() {
    this.count = 0;
    this.active = 0;
    this.enable = function () {this.active = 1;}
    this.disable = function () {this.active = 0;}
    var self = this;
    this.dodo = function () {
        $("html").mousemove(function(event) {
            // I want to get here the "active" param value;                 
            alert(self.active);
        });
    }
    this.enable();
    this.dodo();
}

instance = new test1();
instance.disable();
1 голос
/ 30 декабря 2011

Когда вы вызываете функцию 'this', это относится к объекту, из которого была вызвана функция, или к вновь созданному объекту, когда вы используете его вместе с ключевым словом new. Например:

var myObject = {};
myObject.Name = "Luis";
myObject.SayMyName = function() {
    alert(this.Name);
};

myObject.SayMyName();

Обратите внимание, что в JavaScript существует несколько способов объявления, определения и назначения полей и методов для объектов, ниже приведен тот же код, написанный более похоже на то, что вы написали:

function MyObject() {
    this.Name = "Luis";
    this.SayMyName = function() {
        alert(this.Name);
    };
}

var myObject = new MyObject();
myObject.SayMyName();

И еще один способ написать то же самое:

var myObject = {
    Name: "Luis",
    SayMyName: function() {
        alert(this.Name);
    },
};

myObject.SayMyName();

Существует также несколько различных способов вызова функции.

1 голос
/ 30 декабря 2011
this.dodo = function ()
            {
                var active = this.active;

                $("html").mousemove(function(event) {
                    alert(active);             
                });
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...