javascript获取和设置属性
我正在尝试使用javascript对象,但进展不太快。你知道为什么这样不行吗javascript获取和设置属性,javascript,object,Javascript,Object,我正在尝试使用javascript对象,但进展不太快。你知道为什么这样不行吗 function Tracking(){ var choices = new Array(); } Tracking.prototype.getChoice = function (key){ return this.choices[key]; } Tracking.prototype.setChoice = function (choice){ this.choices.push[choi
function Tracking(){
var choices = new Array();
}
Tracking.prototype.getChoice = function (key){
return this.choices[key];
}
Tracking.prototype.setChoice = function (choice){
this.choices.push[choice];
}
function TrackingChoice(key, choice){
this.key = key;
this.choice = choice;
}
var a
为空,因为跟踪
对象中的选项数组仍然为空。这让我很困惑。这里有一些问题
function Tracking(){
var choices = new Array();
}
应该是
function Tracking(){
this.choices = new Array();
}
然后,push是一个函数,使用()
而不是[]
:
this.choices.push(choice);
然后,您的测试代码将整个数组传递给setChoice
,而该函数看起来一次只设置一个项目。因此,将1个元素推入数组中,这是整个choices数组。您可能希望为每个元素调用setChoice
,而不是一次。虽然在添加元素时,您的setChoice
实际上应该命名为addChoice
,但并不设置整个数组。我希望setChoice
只重新分配整个数组。它实际上只是取决于你想要这个函数真正做什么
问题在于:
Tracking.prototype.setChoice = function (choice){
this.choices.push[choice];
}
您正在从choices数组的push方法中读取choice属性,该方法实际上没有做任何事情-它将读取属性并返回它,但它将返回未定义的
,并且该值不会存储或使用在任何地方
相反,您应该在上设置choices属性:
Tracking.prototype.setChoice = function (choice){
this.choices = choice;
}
有关正确使用推送方法的更多示例,请查看。尝试这样做
function Tracking(){
this.choices = []; var count = 0;
this.getChoice = function (key){
return this.choices[key];
};
this.setChoice = function (choice){
this.choices[count] = choice;count++;
};
}
function TrackingChoice(key, choice){
this.key = key;
this.choice = choice;
}
var tracking = new Tracking();
var choices = new Array();
tracking.setChoice(new TrackingChoice("purchase", true));
tracking.setChoice(new TrackingChoice("listing", false));
tracking.setChoice(new TrackingChoice("offers", false));
tracking.setChoice(new TrackingChoice("messages", false));
var a = tracking.getChoice(0);
new Array()
应该是[]
非常感谢,伙计,但我不知道为什么.push()不起作用,因为我一直在使用它
function Tracking(){
this.choices = []; var count = 0;
this.getChoice = function (key){
return this.choices[key];
};
this.setChoice = function (choice){
this.choices[count] = choice;count++;
};
}
function TrackingChoice(key, choice){
this.key = key;
this.choice = choice;
}
var tracking = new Tracking();
var choices = new Array();
tracking.setChoice(new TrackingChoice("purchase", true));
tracking.setChoice(new TrackingChoice("listing", false));
tracking.setChoice(new TrackingChoice("offers", false));
tracking.setChoice(new TrackingChoice("messages", false));
var a = tracking.getChoice(0);