Teil eines größeren Programms AngularJS verwenden, das Codefragment:x = {} erzeugt spontanes Objekt
var thePortList = $scope.ipPortList; // an array of objects
...
...
console.log("before", $scope.ipPortList, thePortList);
thePortList[i] = {};
console.log("after", $scope.ipPortList, thePortList);
Schaff diese Ausgabe:
before [] []
after [2: Object] [2: Object]
Ich habe keine Ahnung, warum. Ich könnte erwarten, dass etwas in einem Multi-Thread-Programm, aber nicht in Javascript zu sehen.
x = {} sollte diesem Element im Array ein neues, leeres Objekt zuweisen. Recht? Ich bin verblüfft über dieses Verhalten. Kann jemand etwas Licht abwerfen?
Getestet in Chrome auf meinem lokalen Rechner und Plunkr.
Plunkr hier:
komplette plunkr Konsolenausgabe: Plunker Link
Event tracked Multipane Show Preview Toolbar undefined undefined
editor-0.11.1.js:2 URL visited /?p=preview
VM631:29 portList []
VM631:34 processing 0 [] undefined
VM631:39 skipping 0
VM631:34 processing 1 [] undefined
VM631:39 skipping 1
VM631:34 processing 2 [] undefined
VM631:45 before [] []
VM631:47 after [2: Object] [2: Object]
Was ist Ihre erwartete Ausgabe? Ist das Problem, dass das Objekt in * beiden * von '$ scope.ipPortList' und' thePortList' auftritt? Weil das korrekte Verhalten ist, da beide auf das gleiche Array verweisen. – nnnnnn
Können Sie uns sagen, was Ihr erwartetes Verhalten war? –