OVH Cloud OVH Cloud

méthode contains

3 réponses
Avatar
Claude Schneegans
Depuis quand un objet peut se contenir lui-même ?

Le code ci-dessous montre que contains appliquée sur l'objet lui-même
retourne « true »
Si ce n'est pas un bogue, c'est en tous cas une bien mauvaise décision
de conception.

<BODY>
<SCRIPT>
alert(document.body.contains(document.body));
</SCRIPT>
</BODY>

3 réponses

Avatar
Méta-MCI
Bonjour !


c'est en tous cas une bien mauvaise décision de conception.




Ha ? Et pourquoi ?
Les structures auto-référencées existent dans beaucoup de langages, et
peuvent être très pratiques.


@-salutations

Michel Claveau



Avatar
Claude Schneegans
Les structures auto-référencées existent dans beaucoup de langages, et
peuvent être très pratiques



Il ne s'agit pas ici de référence, mais de savoir si un objet en
contient un autre.
Autrement dit si un objet est un sous objet d'un autre.
Par définition, un objet ne peut pas se contenir lui-même, ça me paraît
assez évident et fondamental.
C'est même une illustration du fameux paradoxe de Russell :
Voir : http://fr.wikipedia.org/wiki/Paradoxe_de_Russell

Et si c'était vrai que par exemple document se contient lui-même, on
pourrait
parler de document.document. ... . .body par exemple, ce qui
manifestement ne fonctionne pas.
Donc ce n'est pas vrai qu'un objet se contient lui-même, donc la
fonction contains ne devrait pas
retourner vrai dans ce cas.


Avatar
Méta-MCI
Bonsoir !


"contains" renvoie une liste de références vers des objets, et non les
objets eux-mêmes. On est donc bien dans un cas d'auto-référencement.
On peut dire que "document" contient une référence vers "document",
accessible via sa méthode "body.contains".

Du moins, c'est comme ça que je lis ton code.


@-salutations

Michel Claveau