Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript获取和设置属性_Javascript_Object - Fatal编程技术网

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

我正在尝试使用javascript对象,但进展不太快。你知道为什么这样不行吗

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);