Javascript对象属性不在范围内

我似乎对对象的属性范围有问题。 我想将每个Message对象的titlemessage属性输出到select元素,但它不工作 ! 我做错了什么

    $(function(){ function Message(title, message) { this.title=title; this.message=message; this.getTitle = function(){ return this.title; }; this.getMessage = function(){ return this.message; }; } var messages = new Array( new Message("First Title", "This is the first message"), new Message("Second Title", "This is another message") ); function updateSelect () { $("#cannedMessages_button").empty(); for (c in messages) { // First try, with getters and setters $("#cannedMessages_button").append($('', { value : c.getMessage() , text : c.getTitle() })); // Second try, directly $("#cannedMessages_button").append($('', { value : c.message , text : c.title })); } } updateSelect(); });   

我可以validationforeach实际上是在运行两次迭代,但我无法从对象中获取值。

不要for (c in messages )。

in用于迭代对象的属性,而不是迭代数组中的值。

使用经过validation的真实

 for(var i = 0; i < messages.length; i++) { ... } 

此外,您没有将getTitlegetMessage方法放在原型上,这有点浪费。

js中for in循环的语法是:

 for(var key in obj) { var currentElement = obj[key]; }