2015-10-16 93 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>