Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Конструктор, не могу получить доступ к свойству класса (https://javascript.ru/forum/misc/52390-konstruktor-ne-mogu-poluchit-dostup-k-svojjstvu-klassa.html)

voodoo_dn 17.12.2014 13:16

Конструктор, не могу получить доступ к свойству класса
 
Добрый день!

Стоит задача - надо сделать класс, который будет реализовывать запрос данных и отрисовку.

Но я не могу получить доступ к свойствам класса. Пример ниже.

var addressbook = {
    list: [],
    init: function(url) {
        return $.ajax({
            cache: false,
            dataType: "json",
            timeout: 10000,
            type: "POST",
            url: url,
            success: function(data) {
                что - то делаю с data
                this.list = data - мне надо присвоить свойству list, значения из данной функции, но у меня не получается
            },
        });
    },
}


Я видимо как-то не так обращаюсь к свойству, по этому не могу получить к нему доступ?

skrudjmakdak 17.12.2014 13:18

как вариант
var addressbook = {
    list: [],
    init: function(url) {
var me = this;
        return $.ajax({
            cache: false,
            dataType: "json",
            timeout: 10000,
            type: "POST",
            url: url,
            success: function(data) {
                что - то делаю с data
                me.list = data - мне надо присвоить свойству list, значения из данной функции, но у меня не получается
            },
        });
    },
}

moskitos80 17.12.2014 13:30

skrudjmakdak тогда бы уж объяснили человеку что внутри функции:

success: function(data) {
    что - то делаю с data
    me.list = data - мне надо присвоить свойству list, значения из данной функции, но у меня не получается
},


this - уже не есть ссылка на контекст объекта addressbook, ибо success - есть метод объекта-параметра который Вы передаете в $.ajax... Ох уж эти контексты ;)

voodoo_dn 17.12.2014 13:36

Цитата:

Сообщение от moskitos80 (Сообщение 346894)
skrudjmakdak тогда бы уж объяснили человеку что внутри функции:

success: function(data) {
    что - то делаю с data
    me.list = data - мне надо присвоить свойству list, значения из данной функции, но у меня не получается
},


this - уже не есть ссылка на контекст объекта addressbook, ибо success - есть метод объекта-параметра который Вы передаете в $.ajax... Ох уж эти контексты ;)

Да я в курсе этого :) Я просто не знаю как мне лучше создать объект.
Я должен из функций(в данном случае функции в функции) получать доступ к this.list

moskitos80 17.12.2014 13:39

В таком случае skrudjmakdak дал вам железное решение :)

krutoy 17.12.2014 18:07

skrudjmakdak,
Странное какое то траханье мозгов. This ради this? Почему не
var addressbook = {
    init: function(url) {
        return $.ajax({
            cache: false,
            dataType: "json",
            timeout: 10000,
            type: "POST",
            url: url,
            success: function(data) {
                addressbook.list = data// - мне надо присвоить свойству list, значения из данной функции, но у меня не получается
            },
        });
    },
}

?


Часовой пояс GMT +3, время: 03:27.