Pendant le développement, il est inévitable que vous puissiez interrompre la relation de référence entre les objets et que vous souhaitez simplement laisser une copie.
Dans JavaScript, la méthode simple consiste à utiliser la fonction JSON pour chaîner l'objet en une chaîne, puis à l'analyser dans un nouvel objet. Soit la recherche de code en ligne, il y a encore beaucoup de codes de clone dans la communauté open source.
Bien que le code puisse être trouvé, les choses sont toujours celles de quelqu'un d'autre, et les codes d'apprentissage seront toujours un sujet immuable.
J'ai moi-même écrit deux fonctions clonées:
Cloneown: clone les propres propriétés d'un objet personnalisé, qui n'inclut pas les propriétés héréditaires. Les propriétés peuvent être des types de données et des tableaux de base. Les objets personnalisés peuvent être personnalisés. Vous pouvez formuler une liste de noms d'attribut à Clone.
CLONEARRAY: CLONEZ UN TABLEAU, Les éléments du tableau peuvent être des objets, des types de base.
La copie de code est la suivante:
// Le premier paramètre est l'objet cloné, et le deuxième paramètre est la liste d'attribut qui doit être clonée
fonction cloneown () {
var obj = arguments [0];
if (typeof obj === 'Undefined' || obj === null)
retour {};
if (typeof obj! == 'objet')
retour obj;
// Le deuxième paramètre est la liste des noms d'attribut, alors utilisez cette liste pour sélectionner
// sinon, tous les attributs seront clonés
var attrs = arguments [1];
var active_spec_attr = true;
if (! (attrs instanceof array)) {
//console.log(Attrs);
attrs = obj;
enable_spec_attr = false;
}
var result = {};
var i;
for (i in attrs) {
attr = activer_spec_attr? attrs [i]: i;
//console.log(Attr);
if (obj.hasownproperty (attr)) {
if (obj [att] instance du tableau) {
Result [attr] = clonEarray (obj [att]);
}
else if (typeof obj [att] === 'objet') {
Résultat [att] = cloneown (obj [att]);
} autre {
Résultat [attr] = obj [att];
}
}
}
Résultat de retour;
}
La copie de code est la suivante:
// cloner le tableau
fonction clonEArray (array) {
if (typeof array === 'Undefined' || array === null)
retour [];
if (! (instance de tableau de tableau))
retour [];
résultat = [];
var i;
pour (i dans l'arraie) {
if (typeof array [i]! == 'objet') {
résultat [i] = array [i];
continuer;
}
// objet clone
résultat [i] = cloneown (array [i]);
}
Résultat de retour;
}
Appel
1. Clone régulièrement des objets personnalisés:
La copie de code est la suivante:
var a = {
Nom: «Frank»,
Âge: 20
};
var b = cloneown (a);
2. Spécifiez les propriétés clonées
La copie de code est la suivante:
var a = {
Nom: «Frank»,
Âge: 20 ans,
Adresse: «N'importe où»
};
var b = cloneowne (a, ['name', 'age']);
3.Clone un objet personnalisé contenant des attributs de tableau
La copie de code est la suivante:
var a = {
Nom: «Kxh»,
Âge: 20 ans,
livres: ['hai', 'ho', 'ali'],,
aime: [
{wname: 'kaili', salaire: 81, fav: "aaaaa"},
{wname: 'Seli', salaire: 82, fav: "bbb"},
{wname: 'Ailun', salaire: 83, fav: "ccc"},]
};
var b = cloneowne (a);
4.clone le tableau avec des objets personnalisés
La copie de code est la suivante:
var a = [
{
Nom: «Frank»,
Âge: 20
},
{
Nom: «Leon»,
Âge: 30
}
]]
var b = clonearray (a);
Il y a encore de nombreux problèmes avec le code ci-dessus, tel que le clonage d'objets intégrés, tels que le type Datatime.
Les problèmes sont gérés et un tel processus d'apprentissage doit également être fait.