J'ai un constructeur en JavaScript comme ceci:Quelles parties des classes JavaScript sont recréées en mémoire lorsque j'appelle `new`?
function Foo() {
var privateProperty = "goodbye";
this.publicProperty = "hello";
function privateMethod() {
return "Shhhhh";
}
this.publicMethod = function publicMethod() {
return "extroverted";
};
}
Foo.prototype.youCanSeeMe = "I'm out here";
Foo.prototype.typical = function typical() {
return "look at me out here";
};
var b = new Foo();
var c = new Foo();
Dans la dernière version du moteur JavaScript v8, les propriétés de ma classe sont copiées dans la mémoire? Je veux dire, y a-t-il maintenant deux copies de privateProperty
, publicProperty
, privateMethod
, et ainsi de suite en mémoire? Si l'empreinte mémoire de b
était de 100 octets, l'empreinte mémoire de b
et c
ensemble serait-elle de 200 octets? Plus grand plus petit?
pourrait vous s'il vous plaît citer quelques sources pour cette information? – zzzzBov
@elmalto C'est parce que le constructeur est une fermeture? –
@zzzzBov Il est facile de raisonner ceci; changer le prototype affecte ensuite les deux instances, donc il vit dans sa propre partie de la mémoire et les autres instances la référencent. –