Kann mir jemand das erklären?Javascript Objekte und variabler Bereich
Dies funktioniert:
function Pin() { };
function Pi() { };
function User() { };
var PiArray = [];
var PinArray;
for (var i = 0; i < 2; i++) {
PiArray[i] = new Pi();
PiArray[i].Name = '';
PiArray[i].PinArray = [];
for (var j = 0; j < 25; j++) {
PiArray[i].PinArray[j] = new Pin();
PiArray[i].PinArray[j].Number = j + 2;
PiArray[i].PinArray[j].PulseWidth = 0;
PiArray[i].PinArray[j].PulseFrenquency = 0;
PiArray[i].PinArray[j].Dirtybit = false;
};
}
/* Output is
[{"Name":"","PinArray":[{"Number":2,"PulseWidth":0,"PulseFrenquency":0,"Dirtybit":false},{"Number":3,"PulseWidth":0,"PulseFrenquency":0,"Dirtybit":false},{"Number":4,"PulseWidth":0,"PulseFrenquency":0,"Dirtybit":false},
etc.
*/
Aber ich kann nicht herausfinden, wie diese in ein Objekt zu machen, den Umfang der Variablen verhalten sich nicht wie ich erwartet.
Dies ist, was ein Beispiel dessen, was ich versucht:
function Pin() { };
function Pi() { };
var User = (function() {
PiArray = [];
function User() {
var PinArray;
for (var i = 0; i < 2; i++) {
PiArray[i]= new Pi();
PiArray[i].Name = '';
PiArray[i].PinArray = [];
for (var j = 0; j < 25; j++) {
PiArray[i].PinArray[j] = new Pin();
PiArray[i].PinArray[j].Number = j + 2;
PiArray[i].PinArray[j].PulseWidth = 0;
PiArray[i].PinArray[j].PulseFrenquency = 0;
PiArray[i].PinArray[j].Dirtybit = false;
};
}
}
console.log(JSON.stringify(PiArray));
return User;
})();
new User();
und der Ausgang ist:
[ ]
Ich verstehe nicht, warum?
___unclear was Sie asking___ – Rayon
sind Es könnte helfen, zu wissen, was Sie erwarten zu sehen, und warum. –
Abhängig von der Antwort kann die Umgebung, in der Sie das ausführen (z. B. Rhino, Node oder ein Browser-Debugger), ebenfalls relevant sein. –