簡體   English   中英

如何訪問JavaScript中另一個object的數據?

[英]How can I access a data from another object in JavaScript?

我想在jobs.scan object 中訪問availJobs ,但我不能。 它沒有在jobs.attack中定義。 我該怎么做才能訪問其他對象中的jobs.scan部分?

var jobs = new Array();

jobs.scan = function() {
    var availJobs = new Array();
    var jobContents = dom.get("app8743457343_content");
    var boldthreads = jobContents.getElementsByTagName('b');
    for(var i = 0; i < boldthreads.length; i++) {
        if(boldthreads[i].style.color == 'silver') {
            availJobs.push(boldthreads[i].textContent);
        }
    }
    return availJobs;
}

jobs.attack = function() {
    jobs.scan();
    alert(jobs.availJobs[0]);
}

jobs.attack();

jobs.attack 中的jobs.attack availJobs[0]不起作用。 這是undefined的。 如何將availJobs設置為公共的並且可以在其他對象中訪問?

感謝所有幫助:! 這是我輸入的代碼:

var jobs = {
    availJobs: new Array(),
    scan: function() {
        var jobContents = dom.get("app8743457343_content");
        var boldthreads = jobContents.getElementsByTagName('b');
        for(var i = 0; i < boldthreads.length; i++) {
            if(boldthreads[i].style.color == 'silver') {
                this.availJobs.push(boldthreads[i].textContent);
            }
        }
    },
    attack: function() {
        this.scan();
        alert(this.availJobs[0]);
    },
};

jobs.attack();

這段代碼絕對更優雅,你不覺得嗎? 我用過這個並且有效!

{}用於初始化一個object,Array用於初始化一個數組。

var jobs = {
    availJobs : new Array()
}

jobs.scan = function() {
    var jobContents = dom.get("app8743457343_content");
    var boldthreads = jobContents.getElementsByTagName('b');
    for(var i = 0; i < boldthreads.length; i++) {
        if(boldthreads[i].style.color == 'silver') {
            availJobs.push(boldthreads[i].textContent);
        }
    }
    return availJobs;
}

{}聲明中,您可以將多個成員添加到您的 object,如果您用逗號,分隔它們:

var jobs = {
    availJobs : new Array(),
    anotherMember : null,
    anotherArray : new Array(),
    aFunction = function() {...}
}

我在這里可能是錯的,但我很確定你需要在 function 本身之外聲明 availJobs,即: jobs.availJobs = new Array();

您的代碼不正確。 jobs.scan是一個 function, jobs.attack是另一個。 availJobs是在jobs.scan中定義的局部變量。 您不能從另一個訪問一個 function 的局部變量。

更重要的是,當您嘗試訪問它時, availJobs並不存在,因為 jobs.scan 已經完成。

您需要聲明 availJobs 數組,作業應為 object。

var jobs = {}

jobs.availJobs = []

jobs.scan = function() {
    var availJobs = new Array();
    var jobContents = dom.get("app8743457343_content");
    var boldthreads = jobContents.getElementsByTagName('b');
    for(var i = 0; i < boldthreads.length; i++) {
        if(boldthreads[i].style.color == 'silver') {
            availJobs.push(boldthreads[i].textContent);
        }
    }
    return availJobs;
}

jobs.attack = function() {
    jobs.scan();
    alert(jobs.availJobs[0]);
}

jobs.attack();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM