Während der Entwicklung ist es unvermeidlich, dass Sie die Referenzbeziehung zwischen Objekten unterbrechen und nur eine Kopie hinterlassen möchten.
In JavaScript besteht die einfache Methode darin, die JSON -Funktion zu verwenden, um das Objekt in eine Zeichenfolge zu streiten und es dann in ein neues Objekt analysieren zu können. Entweder die Suche nach Code online, gibt es in der Open -Source -Community immer noch viele Kloncodes.
Obwohl der Code gefunden werden kann, sind die Dinge immer die eines anderen und Lerncodes werden immer ein unveränderliches Thema sein.
Ich habe selbst zwei geklonte Funktionen geschrieben:
Cloneown: Klonen Sie die eigenen Eigenschaften eines benutzerdefinierten Objekts, das nicht ererbte Eigenschaften enthält. Die Eigenschaften können grundlegende Datentypen und Arrays sein. Benutzerdefinierte Objekte können angepasst werden. Sie können eine Liste von Attributnamen zum Klon formulieren.
Clonearray: Klonen Sie ein Array, die Elemente im Array können Objekte und Grundtypen sein.
Die Codekopie lautet wie folgt:
// Der erste Parameter ist das klonierte Objekt, und der zweite Parameter ist die Attributliste, die kloniert werden muss
Funktion Cloneown () {
var obj = argumente [0];
if (typeof obj === 'undefined' || obj === null)
zurückkehren {};
if (typeof obj! == 'Objekt')
Rückkehr obj;
// Der zweite Parameter ist die Liste der Attributnamenliste. Verwenden Sie diese Liste, um auszuwählen
// Ansonsten werden alle Attribute kloniert
var attrs = Argumente [1];
var enable_spec_attr = true;
if (! (attrs Instance von Array)) {
//console.log(attrs);
attrs = obj;
enable_spec_attr = false;
}
var result = {};
var i;
für (i in attrs) {
attr = enable_spec_attr? Attrs [i]: i;
//console.log(Attr);
if (obj.hasownProperty (attr)) {
if (obj [attr] Instanz von Array) {
Ergebnis [Attr] = Clonearray (obj [attr]);
}
else if (typeof obj [attr] === 'Objekt') {
Ergebnis [attr] = kloneown (obj [attr]);
} anders {
Ergebnis [attr] = obj [attr];
}
}
}
Rückgabeergebnis;
}
Die Codekopie lautet wie folgt:
// das Array klonen
Funktion Clonearray (Array) {
if (typeof array === 'undefined' || array === null)
zurückkehren [];
if (! (Array -Instanz von Array))
zurückkehren [];
Ergebnis = [];
var i;
für (i in Array) {
if (Typeof Array [i]! == 'Objekt') {
Ergebnis [i] = Array [i];
weitermachen;
}
// Klonobjekt
Ergebnis [i] = Cloneown (Array [i]);
}
Rückgabeergebnis;
}
Anruf
1. Klonen Sie regelmäßig benutzerdefinierte Objekte:
Die Codekopie lautet wie folgt:
var a = {
Name: 'Frank',
Alter: 20
};
var b = kloneown (a);
2. Geben Sie die geklonten Eigenschaften an
Die Codekopie lautet wie folgt:
var a = {
Name: 'Frank',
Alter: 20,
Adresse: 'überall' '
};
var b = kloneowne (a, ['name', 'ay']);
3.Conon ein benutzerdefiniertes Objekt, das Array -Attribute enthält
Die Codekopie lautet wie folgt:
var a = {
Name: 'kxh',
Alter: 20,
Bücher: ['Hai', 'Ho', 'Ali'],
Likes: [
{wname: 'kaili', lohn: 81, fav: "aaaaa"},
{wname: 'seli', lohn: 82, fav: "bbb"},
{Wname: 'Ailun', Lohn: 83, Fav: "CCC"},]
};
var b = kloneowne (a);
4.Kunden Sie das Array mit benutzerdefinierten Objekten an
Die Codekopie lautet wie folgt:
var a = [
{
Name: 'Frank',
Alter: 20
},
{
Name: 'Leon',
Alter: 30
}
];
var b = klonearray (a);
Es gibt immer noch viele Probleme mit dem obigen Code, wie z. B. das Klonen integrierter Objekte, wie z.
Es werden Probleme verwaltet, und ein solcher Lernprozess muss ebenfalls durchgeführt werden.