Quando "clonazione" di un oggetto in javascript il clone dovrebbe comportarsi come l'originale?

1

Sto usando il framework webgl three.js.

La maggior parte delle classi può essere "clonata" tramite un metodo .clone() .

Wikipedia sembra essere molto severo quando definisce "clonazione".

In computer science, cloning refers to the making of an exact copy of an object...

Tuttavia, ho riscontrato qualcosa di simile a questo:

const myClass = new Class()

myClass.foo = 'foo'

myClassClone = myClass.clone()

myClassClone.foo === myClass.foo //true

^ questo è quello che mi aspetto di vedere da un "clone".

La documentazione per la libreria non sembra essere coerente però:

link

Returns a clone of this object and optionally all descendants.

vs.

link

Return a new material with the same parameters as this material.

Sto lottando con il secondo perché ho riscontrato qualcosa di simile

myClass = new Class()
myClass.foo = 'foo'
myClass.bar = 'bar'

myClone = myClass.clone()
myClone.foo === myClass.foo //true
myClone.bar === myClass.bar //false

A seconda di cosa sono foo e bar, il mio clone può o meno comportarsi come l'originale. Dipende da quelli che sono considerati questi "parametri" ma è ancora un po 'confuso.

Che cosa posso dire di questa situazione.

  1. Posso usare "(non) deterministico" per descrivere questi metodi .clone() ? Tutti loro, alcuni di loro?
  2. Hanno un nome appropriato? Questi non restituiscono mai copie esatte degli oggetti poiché hanno uuid s, ma uno sembra più "simile a un clone" rispetto all'altro .
  3. quali altre regole e considerazioni potrebbero essere fatte durante la clonazione? La clonazione di listener di eventi allegati potrebbe non essere l'idea migliore.
posta Dusan Bosnjak 'pailhead' 08.05.2018 - 23:31
fonte

0 risposte

Leggi altre domande sui tag