Supposons que nous ayons un pool d'objets (alias un tableau). Ensuite, nous Constructor.apply (obj, arguments).Javascript GC appliquer l'objet existant
var obj = objectPool[nextAvailableIndex];
obj.index = nextAvailableIndex;
nextAvailableIndex += 1;
Constructor.apply(obj, arguments);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Qu'est-ce que cela fait à l'objectif existant? La mémoire est-elle réutilisée? Est-ce que cela aide à éviter le GC? N'est-ce pas essentiellement la même chose que la nouvelle ou est-ce similaire mais différent?
J'aurais dû mettre plus de code ici. C'est un pool d'objets. Supposons que pool [100] ne soit plus nécessaire et nous voulons le réutiliser. Donc, le var obj = pool [100]; ...; constructor.apply (obj, arguments); Ensuite, nous remettons obj dans pool [100]. Les questions auxquelles il faut répondre sont les suivantes: 1) nouveau vs appliquer, allons-nous réutiliser la mémoire ou créons-nous toujours la même chose que la nouvelle. Si c'est le cas, alors le pool d'objets est une idée inutile car cela n'empêche pas GC d'appliquer. Je ne vous ai pas répondu à mes questions. Mon mauvais peut-être, mais il semble question réinterprétée. – FreddyNoNose
Si vous utilisez 'apply', le même objet est utilisé à chaque fois, mais chaque fois que vous utilisez' new', un nouvel objet sera créé. Dans ce cas, si vous remettez l'obj à pool, vous réutilisez la mémoire et si vous avez zéro références du pool, le pool sera récupéré. –
Merci. J'y avais pensé aussi, mais un de mes amis la veille de ma publication m'avait convaincu que j'avais tort. Je suppose que j'ai perdu confiance en ce que je croyais. – FreddyNoNose