Heim > Web-Frontend > js-Tutorial > Hauptteil

Zusammenfassung der Unterscheidung zwischen Object- und Aarry-Methoden in JS

高洛峰
Freigeben: 2017-02-28 14:18:53
Original
1281 Leute haben es durchsucht

1. Häufig auftretende Probleme:

Bei der Beurteilung des Typs eines Objekts in JS wird normalerweise typeof verwendet. Zu diesem Zeitpunkt tritt das Problem auf, da typeof() beim Identifizieren eines Arrays zurückgegeben wird .Objekt, daher sind für die Beurteilung, ob ein Objekt ein Array in JS ist

, einige spezielle Verarbeitungsmethoden erforderlich. Im Folgenden werden sechs Verarbeitungsmethoden vorgestellt, die ich zusammengefasst habe.

2. Direkt zur Sache

Um bei der Entwicklung festzustellen, ob ein Objekt ein Array ist, empfiehlt sich die Verwendung der folgenden Funktion:

function isArray(obj){
  if(Array.isArray){
    return Array.isArray(obj);
  }else{
   return Object.prototype.toString.call(obj)==="[object Array]";
  }
}
Nach dem Login kopieren


Die obige Funktion ist praktisch für Menschen, die Probleme lösen möchten. Ich werde die sechs Methoden im Folgenden ausführlich beschreiben, da der Prüfer möglicherweise umfassende Kenntnisse benötigt von Ihnen während des Interviews;

Detaillierte Erklärung der drei und sechs Lösungen:

(1) Methode 1: Versuchen Sie, die Variable mit der toString-Methode

umzuwandeln einen String, der seinen Typ darstellt, indem Sie die Methode toString() aufrufen. Diese Methode ist für echte Arrays möglich; wenn das Parameterobjekt in eine Zeichenfolge umgewandelt wird, die [Objektargumente] zurückgibt, schlägt die Konvertierung auch für Objektklassen fehl, die numerische Längenattribute enthalten.

Die Methode ist wie folgt:


nbsp;html>

 
 <title>Array的判断方法</title>
 <meta>
 <script>
	function isArrayOne(arr){
		return <span style="color:#cc0000;">Object.prototype.toString.call(arr) === "[object Array]";
	}
	var obj = {"k1":"v1"};
	var arr = [1,2];
	console.log("对象的结果:"+isArrayOne(obj));
	console.log("数组的结果:"+isArrayOne(arr));
 </script>
 
 
 
 
Nach dem Login kopieren

Das Ergebnis ist wie gezeigt:

Zusammenfassung der Unterscheidung zwischen Object- und Aarry-Methoden in JSHinweis: Es wird empfohlen, „=== gleich zu gleich“ statt „== gleich zu gleich“ zu verwenden, da dies effizienter ist!

(2) Methode 2: Über isArray:

Mit Javascript 1.8.5 (ECMAScript 5) kann der Variablenname .isArray() diesen Zweck erreichen, sofern diese Funktion unterstützt wird. Tatsächlich ist isArray die Kapselung der

Methode eins.

Die Verwendung ist sehr einfach:

Array.isArray(obj); //obj ist das zu erkennende Objekt

Gibt true oder false zurück, wenn wahr, ist es wahr ein Array

(3) Methode 3: Beurteilung anhand des Instanzoperators,

Hinweis: Die linke Seite des Instanzoperators ist das untergeordnete Objekt (das zu testende Objekt) und die rechte Seite ist der übergeordnete Konstruktor (hier Array),

Das heißt: untergeordnete Objektinstanz des übergeordneten Konstruktors

Instanz: Instanz: Jedes mit dem neuen Konstruktor () erstellte Objekt wird als Instanz des Konstruktors bezeichnet

Ich war schon lange verwirrt, daher ist es besser, direkt auf den Code zu schauen:

nbsp;html>

 
 <meta>
 <meta>
 <meta>
 <meta>
 <meta>
 <title>Document</title>
 <script>
	var obj = {"k1":"v1"};
	var arr = [1,2];
	console.log("Instanceof处理对象的结果:"+(obj instanceof Array));
	console.log("Instanceof处理数组的结果:"+(arr instanceof Array));
 </script>
 
 
 
 
Nach dem Login kopieren

Die laufenden Ergebnisse lauten wie folgt:

Zusammenfassung der Unterscheidung zwischen Object- und Aarry-Methoden in JS (4) Verwenden Sie die Funktion isPrototypeOf()

Prinzip: Erkennen Sie, ob ein Objekt der Prototyp eines Arrays ist (oder sich im Array befindet). Prototypenkette. Es kann nicht nur das direkte übergeordnete Objekt erkennen, sondern auch alle übergeordneten Objekte in der gesamten Prototypenkette.

Verwendungsmethode: parent.isPrototypeOf(child), um zu erkennen, ob das übergeordnete Objekt der Prototyp des untergeordneten Objekts ist ;

Es ist zu beachten, dass die von der Funktion isPrototypeOf() implementierte Funktion dem instancof-Operator sehr ähnlich ist

Array.prototype.isPrototypeOf( arr) //true bedeutet ein Array, false ist kein Array

(5) Verwenden Sie den Konstruktor-Konstruktor

Spezifischer Code:


Das Ergebnis ist wie in der Abbildung gezeigt
nbsp;html>

 
 <meta>
 <meta>
 <meta>
 <meta>
 <meta>
 <title>Document</title>
 <script>
	var obj = {&#39;k&#39;:&#39;v&#39;};
	var t1 = new Array(1);
	var t2 = t1;
	console.log(obj.constructor == Array);
	console.log(t1.constructor == Array);
	console.log(t2.constructor == Array);
 </script>
 
 
	
 
Nach dem Login kopieren

(6) Verwenden Sie typeof (Objekt) + Typnamen zur Beurteilung:

Zusammenfassung der Unterscheidung zwischen Object- und Aarry-Methoden in JSDer Code lautet wie folgt:

Das Ergebnis ist wie folgt:
nbsp;html>

 
 <meta>
 <meta>
 <meta>
 <meta>
 <meta>
 <title>Document</title>
 <script>
	function isArrayFour(arr){
		if(typeof(arr)==="object"){
			if(arr.concat){
				return "This is Array";
			}else{
				return "This Not Array";
			}
		}
	}
	var arr = [1];
	var obj = {&#39;k&#39;:&#39;v&#39;};
	console.log(typeof(arr));
	console.log(typeof(obj));
	console.log(isArrayFour(arr));
	console.log(isArrayFour(obj));
 </script>
 
 
 
 
Nach dem Login kopieren

Diese Methode weist tatsächlich einige Einschränkungen auf Die Schüler können es möglicherweise sofort lösen, d 🎜>

Die obige Zusammenfassung der sechs Möglichkeiten zur Unterscheidung von Object und Aarry in JS ist der gesamte vom Herausgeber geteilte Inhalt. Ich hoffe, dass er Ihnen eine Referenz geben kann, und ich hoffe, dass Sie die chinesische PHP-Website unterstützen können.

Weitere Artikel zur Zusammenfassung der JS-Methode zur Unterscheidung von Object und Aarry finden Sie auf der chinesischen PHP-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!