x.field = true;
x.field.netType = "System.Boolean";
funktioniert tatsächlich.
x.field
was ein primitiver Boolescher Wert ist, wird intern in Objekt konvertiert, aber wir haben keine Referenz davon, so dass es sofort zu Müll wird. Wenn wir den Reference von x.field
speichern, so dass es kein Müll ist, können wir den Wert erhalten. wie folgt ....
x.field = true;
var y = x.field.netType = "System.Boolean";
alert(y);
Wenn Sie Sie dieses
var x = {};
x.field = {};
x.field.netType = "System.Boolean";
alert(x.field.netType);
Code schreiben, dann wird es funktionieren.
In Ihrem Code diese Zeile x.field.netType = "System.Boolean";
Fehler in `Strict-Modus sie
`//Cannot assign to read only property 'netType' of true`
Warum diese Linie x.field.netType
gibt undefined
Objekte dieser Art sind nur Wrapper, ist ihr Wert die primitive werfen wrap und sie werden in der Regel auf diesen Wert nach Bedarf herunterdrücken.
JavaScript wird zwischen primitives and objects
problemlos erzwingen.
var a = 'Intekhab';
a.length;//In this case the string value is coerced to a string object in order to access the property length.
var Twelve = new Number(12);
var fifteen = Twelve + 3; // In this case Object Twelve is coerced to a primitive value.
fifteen; //15
Wenn JavaScript versucht wird, eine Eigenschaft zu einem primitiven zuweisen er tatsächlich die primitiven zu einem Objekt zwingen wird. Dieses neue Objekt hat keine Referenzen und wird sofort zum Garbage Collection-Objekt.
var primitive = "september";
primitive.vowels = 3;
//new object created to set property
(new String("september")).vowels = 3;
primitive.vowels;
//another new object created to retrieve property
(new String("september")).vowels; //undefined
Wurf in ' 'use strict',' an der Spitze und die Magie sehen ;-) – thefourtheye
@thefourtheye? Was würde der strikte Modus hier tun? – Pointy
@Pointy Beschweren. Es würde sich beschweren. Strenger Modus ist das wählerische Mädchen, das dich nicht das verlockendste Zeug machen lässt, während der nicht-strikte Modus das Gegenteil ist. –