2015-10-16 68 views
0

我知道有一些極其類似的問題,但我似乎無法得到任何工作。訪問對象內的鍵的值

爲了簡潔起見,我將對此進行總結。我有這個構造函數的字符串被賦值爲鍵值(賦值)。

var Quote = function() { 
    this.quote1 = 'You can discover more about a person in an hour of play than in a year of conversation.'; 
    this.quote2 = 'Nothing is at last sacred but the integrity of your own mind.'; 
    this.quote3 = 'We have to fight them daily, like fleas, those many small worries about the morrow, for they sap our energies.'; 
    this.quote4 = 'Ethics are so annoying. I avoid them on principle.'; 
    this.quote5 = "Never trust anything that can think for itself if you can't see where it keeps its brain."; 
}; 

module.exports = Quote; 

使用AJAX我將構造函數中鍵的值打印到靜態頁面。不過......我只能打印「quote1」,「quote2」等等......(只是鍵的名字)。

這是我訪問構造函數的函數。我的問題是:如何訪問分配給構造函數中的鍵的字符串值?那可能嗎?

預先感謝您。

module.exports = function(object) { 
    var propArray = Object.keys(object); 
    var randomProp = propArray[Math.floor(Math.random() * propArray.length)]; 
    return {quote: randomProp}; 
}; 

回答

1

正如你所料,有幾件事情你的代碼錯誤:)

我已經非常透徹的意見改寫它。

<script> 

// create your 'Quote' class, which can be instantiated as many times as necessary 
var Quote = function() { 
    this.quote1 = 'You can discover more about a person in an hour of play than in a year of conversation.'; 
    this.quote2 = 'Nothing is at last sacred but the integrity of your own mind.'; 
    this.quote3 = 'We have to fight them daily, like fleas, those many small worries about the morrow, for they sap our energies.'; 
    this.quote4 = 'Ethics are so annoying. I avoid them on principle.'; 
    this.quote5 = "Never trust anything that can think for itself if you can't see where it keeps its brain."; 
}; 

// now let's set up the 'exports' method on the function's prototype 
// this will allow any new instance of the Quote function to call or override this method 
// without affecting the master 'Quote' class 
Quote.prototype.exports = function() { 
    // you don't need to explicitly pass an object to this function 
    // just have it reference itself using the 'this' keyword 
    var propArray = Object.keys(this); 
    var randomProp = propArray[Math.floor(Math.random() * propArray.length)]; 

    // objects in JavaScript can be handled like associative arrays 
    // simply access the key of 'this' with the value provided by 'randomProp' 
    return {quote: this[randomProp]}; 
}; 

// create a new instance of 'Quote' 
// this guy can be used and manipulated independent of the master 'Quote' class 
var module = new Quote(); 
// let's store the value returned by 'exports' in randomQuote 
// note the() at the end of module.exports -- this tells JavaScript to treat the object as a function 
var randomQuote = module.exports(); 

// write your quote to the document -- or do whatever else you want to with it at this point 
document.write(randomQuote.quote); 

</script>