Maison > interface Web > js tutoriel > le corps du texte

Exemple simple d'héritage de tableau dans JavaScript_Basics

WBOY
Libérer: 2016-05-16 15:48:13
original
1183 Les gens l'ont consulté

Les données structurées en arborescence sont souvent utilisées lors de l'écriture de certaines bibliothèques, et certaines données structurées en arborescence ont des exigences très élevées pour obtenir le chemin de la racine à la feuille. Par exemple, la table de routage entière d'un site est une telle arborescence, et son « chemin » est en fait la partie chemin de l'URL. J'ai donc utilisé plusieurs fois l'héritage de tableaux fous pour l'implémenter, et je le partagerai avec vous ci-dessous.
En JavaScript, les tableaux sont également un type d'objet et peuvent également être hérités. Deux objets eux-mêmes peuvent avoir une relation d'héritage, et les tableaux ne font pas exception. Nous laissons donc n'importe quel nœud d'un arbre être un tableau, et il ne conserve que la valeur de l'élément avec le plus grand indice. Les valeurs des autres éléments sont héritées des nœuds ancêtres via l'héritage prototypique. De cette façon, nous pouvons accéder au chemin depuis le nœud racine vers le nœud feuille, tout comme nous exploitions un tableau normal. Voici une implémentation simple :
Courez

<script>
// 定义节点类
var TNode = function(value) {
 this.push(value);
};
TNode.prototype = [];
TNode.prototype.constructor = TNode;
TNode.prototype.createChild = function(value) {
 var node = Object.create(this);
 TNode.call(node, value);
 return node;
};

// 使用节点造出一棵简单的树
var root = new TNode('root');
var a = root.createChild('a');
var b = a.createChild('b');

// 将叶节点视为数组,直接得到路径
document.write(b.join('/')); <!-- root/a/b
</script>

Copier après la connexion

Cet usage est considéré comme une magie relativement sombre, et il peut être difficile à comprendre si vous ne comprenez pas le principe de l'héritage prototypique. Donc s'il ne s'agit que d'une implémentation d'une bibliothèque, elle peut être écrite comme ceci (je l'ai utilisée plusieurs fois, et il s'avère qu'il n'y a pas de piège), mais si elle est utilisée directement dans le code métier, elle peut être plainte à mort. Bien que cette utilisation ne viole pas l’idée fondamentale du langage JavaScript.
Une caractéristique de cette utilisation est que lorsque la valeur du nœud ancêtre est mise à jour, elle sera automatiquement synchronisée avec tous les nœuds enfants. Bien qu'il y ait également une surcharge de performances lors de l'accès à la chaîne de prototypes, cela est beaucoup plus rapide que de parcourir l'arborescence vous-même au niveau du code. Bien sûr, s'il n'y a pas une telle demande et que vous souhaitez simplement implémenter un numéro simple, il est préférable d'utiliser la méthode traditionnelle. Après tout, cela dépend trop du langage et il pourrait être difficile de migrer vers d'autres langages de programmation à l'avenir.

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal