Javascript数组在构造函数Poo中不起作用

时间:2014-10-26 20:47:52

标签: javascript arrays constructor

我尝试将数据推送到构造函数中的javascript数组中,并收到此错误:

TypeError: this.listeetudiant is undefined

这是我的构造函数:

function Cours(){

*/the array that doesnt work : */
this.listeetudiant=[]; 

*/ the method that is supposed to use the content of the array and to add data to   the     array */
this.affForm=printForm; 

}

然后,我尝试使用该方法将数据添加到listeetudiant,但它不起作用:

function printForm(){
 this.listeetudiant.push = (1);
}

我试试

this.listeetudiant.push(etudiant[id].id);

其中etudiant [id] .id是正确的var ...

但它仍然无效并且说TypeError:this.listeetudiant未定义。

请帮助我!

当只有一个数据要添加到一个唯一变量时,它很有效。 但它对数组来说根本不起作用! 我需要在不同的时间段将几个数据推入我的数组监听系统,并且它根本不起作用。

例如,如果我写:

function printForm(){
this.listeetudiant=(1); 
alert(this.listeetudiant);
}

它运作良好,并且监听值在我的对象中变为1。 问题是我不想添加一个值,我希望listeetudiant是一个数组,并能够添加30个值! Snif!

2 个答案:

答案 0 :(得分:2)

你从未真正定义this.listeetudiant。您已经创建了一个构造函数,但实际上您从未调用构造函数,因此尚未定义this.listeetudiant 如果Cours应该是一个对象,你需要先调用它:

var cours = new Cours();

那么你可以做cours.listeetudiant.push();

之类的事情
function printForm(){
 this.listeetudiant.push = (1);
}

- 在这种情况下this是printform函数。 cours函数中的this表示cours功能。 this指的是你所处的任何范围.shotetududiant是一个数组,它是cours对象的一个​​属性,所以当你想要推送到那个数组时,你需要引用它所属的对象。

答案 1 :(得分:0)

好的,谢谢大家杰克和

非常感谢你的帮助,最后......让它像那样工作:     function printForm(){     cours.listeetudiant.push(' 1'' 12&#39);     }

仅供参考,这是一系列对象,所以我就是这样做的:     赛道[0] .listeetudiant.push(' 1'' 12&#39);

从法国度过美好的一天。 如果有一天我能够帮助的话,我会帮忙。

如果你想知道我在处理代码:http://nicolashcodes.wordpress.com/2014/09/29/exercice-19-supercours-logiciel-sur-tablette-android-daffectation-deleves-a-un-cours-par-drag-and-drop/

我不知道如何解决问题?