Heim > Web-Frontend > js-Tutorial > Hauptteil

Detaillierte Erläuterung des Klonobjekt-/Funktionscodes in Javascript

伊谢尔伦
Freigeben: 2017-07-27 17:11:15
Original
3035 Leute haben es durchsucht

In JavaScript besteht die einfache Methode darin, die JSON-Funktion zu verwenden, um das Objekt in einen String umzuwandeln und ihn dann in ein neues Objekt zu analysieren. Oder suchen Sie einfach im Internet nach Code. In der Open-Source-Community gibt es immer noch viele Kloncodes.

Obwohl der Code gefunden werden kann, werden die Dinge immer anderen gehören und das Erlernen des manuellen Codierens wird immer ein ständiges Thema sein.

Zwei Klonfunktionen geschrieben:

cloneOwn: Klonen Sie die eigenen Eigenschaften benutzerdefinierter Objekte, mit Ausnahme geerbter Eigenschaften. Eigenschaften können grundlegende Datentypen und Arrays sein, benutzerdefinierte Objekte können Sie eine Liste von Attributen formulieren Namen, die geklont werden sollen.

cloneArray: Klonen Sie ein Array. Die Elemente im Array können Objekte oder Basistypen sein.

//第一个参数是被克隆的对象,第二个参数是需要克隆的属性列表
function cloneOwn() {
  var obj = arguments[0];
  if (typeof obj === 'undefined' || obj === null)
      return {};
  if (typeof obj !== 'object')
      return obj;
  //第二个参数是属性名称列表,就采用该列表进行刷选
  //否则就克隆所有属性
  var attrs = arguments[1];
  var enable_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 = enable_spec_attr? attrs[i]: i;
      //console.log(attr);
      if (obj.hasOwnProperty(attr)) {
          if (obj[attr] instanceof Array) {
              result[attr] = cloneArray(obj[attr]);
          }
          else if (typeof obj[attr] === 'object') {
              result[attr] = cloneOwn(obj[attr]);
          } else {
              result[attr] = obj[attr];
          }
      }
  }
  return result;
}
Nach dem Login kopieren
//克隆数组
function cloneArray(array) {
  if (typeof array === 'undefined' || array === null)
    return [];
  if (!(array instanceof Array))
    return [];
  result = [];
  var i;
  for(i in array) {
    if (typeof array[i] !== 'object') {
      result[i] = array[i];
      continue;
    }
    //clone object
    result[i] = cloneOwn(array[i]);
  }
  return result;
}
Nach dem Login kopieren

Aufruf

1. Klonen Sie das benutzerdefinierte Objekt regelmäßig:

var a = {
    name:'frank',
    age:20
};
var b= cloneOwn(a);
Nach dem Login kopieren

2. Geben Sie die Attribute des Klons an

var a = {
    name:'frank',
    age:20,
    address:'any where'
};
var b = cloneOwne(a, ['name', 'age']);
Nach dem Login kopieren

3. Klonen Sie ein benutzerdefiniertes Objekt, das Array-Attribute enthält

var a = {
    name: 'kxh',
    age: 20,
    books: ['hai','ho','ali'],
    likes: [
        {wname: 'kaili', wage: 81, fav: "aaaaa"},
        {wname: 'seli', wage: 82, fav: "bbb"},
        {wname: 'ailun', wage: 83, fav: "ccc"},]
};
var b = cloneOwne(a);
Nach dem Login kopieren

4. Klonen Sie ein Array, das ein benutzerdefiniertes Objekt enthält

var a = [
   {
      name:'frank',
      age:20
    },
    {
       name:'leon',
       age:30
     }
];
var b = cloneArray(a);
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Klonobjekt-/Funktionscodes in Javascript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!