Объекты-члены становятся нулевыми, когда я вызываю функцию-член - PullRequest
0 голосов
/ 23 января 2019

У меня проблемы с тем, как переменные-члены объектов работают в JavaScript.У меня есть эта функция, которая находит конкретную таблицу в HTML, и она, кажется, работает просто отлично.Но почему-то переменные-члены объекта, связанного с таблицей, становятся нулевыми ...

Я попытался отладить, и вот что я получил.

let tables;
function find_table(s) {
    for(const table of tables){
        if(table.prefix === s){
            return table;
        }
    }
    return null;
}

function search_table(table){
    const tmp = find_table(table);
    console.log(tmp.prefix); // debug0
    tmp.search();
}

Внутри объекта, который называется "table ".

search(){
        const search_text = $("#" + this.prefix + "_search_text").val().toLowerCase();

        let item_count = 0;
        $("#" + this.prefix +"_table tr").each(function () {
            if (!$(this).hasClass("search_ignore")) {
                let count = 0;
                let show = false;
                console.log(this.prefix); // debug1
                for(const type of this.types){ // error here. this.types is undefined
                    const temp = $(this).find("td").eq(count).text().toLowerCase();
                    if(type === 0){
                        // 文字列検索
                        show = temp.includes(search_text)
                    }else if(type === 2){

...(the rest is probably irrelevant)...

Итак, я вызываю функцию search_table(), чтобы найти таблицу в таблицах со строкой.Функция find_table() вроде бы работает нормально.Строка debug0 возвращает "admin_account_list" правильно.Но после этого, когда вызывается search() таблицы, переменная this.types почему-то превратилась в null.И строка debug1 также возвращает null.

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

Я был бы очень признателен, если бы кто-то помог мне понятьчто я тут не так сделал.

...