Heim > Web-Frontend > js-Tutorial > So verwenden Sie die clone()-Funktion von JS

So verwenden Sie die clone()-Funktion von JS

php中世界最好的语言
Freigeben: 2018-03-20 09:58:53
Original
6069 Leute haben es durchsucht

Dieses Mal zeige ich Ihnen, wie Sie die Funktion clone() von JS verwenden. Was sind die Vorsichtsmaßnahmen bei der Verwendung der Funktion clone() von JS? sehen.

1. Lösen Sie den Problemcode

Fügen Sie den Code direkt ein,

function clone(obj){            var copy;            switch(typeof obj){                case 'undefined':break;                case 'number':                case 'string':                case 'boolean':                case 'function':copy = obj;break;                case 'object':                    if(obj == null) copy = null;                    else if(toString.call(obj) === '[object Array]')
                    {
                        copy = [];                        for(var i in obj) copy.push(clone(obj[i]));
                    }                    else if(toString.call(obj) === '[object RegExp]')
                    {
                        copy = obj;
                    }                    else 
                    {
                        copy = {};                        for(var j in obj)
                            copy[j]= clone(obj[j]);
                    }
            }            return copy;
        }        var a=undefined;        var b=1;        var c="Hello";        var d=true;        var add=function(a,b){            return a+b;
        }        var e=null;        var f=[1,2,3];        var g=/^\s+/;        var h={
            a:1,
            b:2
        }
        console.log(typeof clone(a));
        console.log(typeof clone(b));
        console.log(typeof clone(c));
        console.log(typeof clone(d));
        console.log(clone(add)(1,2));
        console.log(Object.prototype.toString.call(clone(e)));
        console.log(Object.prototype.toString.call(clone(f)));
        console.log(Object.prototype.toString.call(clone(g)));
        console.log(Object.prototype.toString.call(clone(h)));
Nach dem Login kopieren

Ergebnis:

2. Fragen

Als ich diese Frage zum ersten Mal sah, dachte ich, dass das Ergebnis von typeof [1,2,3] ist. Was soll ich tun? , Der Typ von Null und Objekt ist beide . Wenn man sich den obigen Code ansieht, wird er mit Object.prototype.toString.call(obj) oder toString.call(obj) gelöst. Warum dann nicht direkt obj.toString() verwenden? Schauen wir uns zunächst an, was obj.toString() ausgeben wird.

null und undefiniert sind eigentlich falsch, das ist sicher, denn toString() kann die Transformation von null und undefiniert nicht abschließen, sondern nur String()

Wenn String() etwas anderes als null oder undefiniert konvertiert, wird es automatisch in toString() konvertiert. Ich gehe zu weit. . Kehren wir zum Thema zurück

Was ist also das Ergebnis der Verwendung von Object.prototype.toString.call(obj)?

Es ist anders. Was ist los?

Es stellt sich heraus, dass Array, Null und andere Typen zwar Instanzen von Object sind, sie jedoch jeweils die toString()-Methode überschreiben. Versuchen wir es zu überprüfen:

Ergebnis:

var arr=[1,2,3];
console.log(Array.prototype.hasOwnProperty("toString"));//判断原型中是否有toString()方法console.log(arr.toString());delete Array.prototype.toString;//删除Array原型里面重写的toStringconsole.log(Array.prototype.hasOwnProperty("toString"));
console.log(arr.toString());
Nach dem Login kopieren

Offensichtlich wurde es wirklich neu geschrieben.

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!

Empfohlene Lektüre:

Wie text-align die Ausrichtung an beiden Enden erreicht

MySQL-Root-Passwort auf Mac-System zurücksetzen


Das obige ist der detaillierte Inhalt vonSo verwenden Sie die clone()-Funktion von JS. 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