


Probleme und Lösungen, die durch die Erweiterung von Array.prototype.indexOf für JS_Basic-Kenntnisse verursacht werden
May 16, 2016 pm 04:18 PMArray verfügt nicht über eine indexOf-Methode, daher ist es schwierig, den Index eines Elements in einem Array zu finden. Zur Vereinfachung des Aufrufs wird Array.prototype.indexOf() durch den Prototyp-Prototyp erweitert, was es einfacher macht bequem zu verwenden. Beim Durchlaufen des Arrays gab es jedoch ein Problem mit diesem benutzerdefinierten indexOf.
Array.prototype.indexOf = function(item) {
for (var i = 0; i < this.length; i ) {
if (this[i] == item)
gib i zurück
}
return -1;
}
Direkt bei Verwendung von
var arr=[1,2,3,4,5]; var index=arr.indexOf(1); //index==0
Aber einmal wurde beim Durchlaufen von Array-Elementen eine for..in..-Schleife verwendet, was andere Probleme verursachte und die harmonische Atmosphäre störte.
document.write(p "=" a[p] "<br/>"); }
Ursprünglich wollte ich die Namen dieser vier Personen ausgeben, aber was wurde ausgegeben?
//3=Lu Bu
//indexOf=function(item) { for (var i = 0; i < this.length; i ) { if (this[i] == item) return i }
Zusätzlich zur Eingabe des Namens wird auch eine eigene erweiterte Methode indexOf ausgegeben. Das Verrückte ist jedoch, dass Firefox „normal“ ist und nur die Namen von vier Personen enthält.
Warum also nicht Firefox?
Ich habe es später herausgefunden, nachdem ich die Informationen überprüft hatte,
Array unterstützt bereits Array.indexOf() in Javascript-Version 1.6, und das von mir verwendete Firefox ist Version 3.5, das bereits Javascript 1.8 unterstützt. IndexOf ist eine inhärente Methode von Array selbst.
Obwohl ich IE8 verwende, unterstützt der IE nur Version 1.3 von JavaScript.
Daher betrachtet IE8 indexOf als ein „benutzerdefiniertes Attribut“, während Firefox es als ein inhärentes Attribut betrachtet, das von sich selbst nativ unterstützt wird.
Ist das wirklich so?
Führen Sie ein Experiment durch, benennen Sie indexOf in myIndexOf um und versuchen Sie es erneut. Als Ergebnis geben sowohl IE als auch Firefox myIndexOf aus, was beweist, dass der vorherige Punkt korrekt ist.
Dann kommt hier ein weiteres Problem. Jetzt verwenden viele Projektcodes diese Methode, aber jetzt muss ich for..in verwenden, um die Elemente des Arrays selbst auszugeben. Ich möchte es nicht selbst verlängern. Was soll ich tun, wenn ich nach Russland komme?
Glücklicherweise stellt Javascript die Methode hasOwnProperty bereit.
Schauen Sie sich die Beschreibung an:
Wenn man sich die Beschreibung ansieht, ist es genau das, was wir wollen.
Code kopieren
Darüber hinaus finden Sie hier ein Beispiel für die Verwendung von hasOwnProperty aus dem Internet:
Funktion Buch(Titel, Autor) {
this.title = Titel;
this.author = Autor;
}
Book.prototype.price = 9,99;
Object.prototype.copyright = "herongyang.com";
var myBook = new Book("JavaScript Tutorials", "Herong Yang");
// Integrierte Eigenschaften auf der Ebene des Basisprototyps ausgeben
document.writeln("/nObject.prototype's integrierte Eigenschaften:");
dumpProperty(Object.prototype, "constructor");
dumpProperty(Object.prototype, "hasOwnProperty");
dumpProperty(Object.prototype, "isPrototypeOf");
dumpProperty(Object.prototype, "toString");
dumpProperty(Object.prototype, "valueOf");
dumpProperty(Object.prototype, "copyright");
// Integrierte Eigenschaften auf der Ebene „Mein Prototyp“ ausgeben
document.writeln("/n==================/nBook.prototype's integrierte Eigenschaften:");
dumpProperty(Book.prototype, "constructor");
dumpProperty(Book.prototype, "hasOwnProperty");
dumpProperty(Book.prototype, "isPrototypeOf");
dumpProperty(Book.prototype, "toString");
dumpProperty(Book.prototype, "valueOf");
dumpProperty(Book.prototype, "copyright");
// Integrierte Eigenschaften auf Objektebene ausgeben
document.writeln("/n==================/nmyBook's integrierte Eigenschaften:");
dumpProperty(myBook, "constructor");
dumpProperty(myBook, "hasOwnProperty");
dumpProperty(myBook, "isPrototypeOf");
dumpProperty(myBook, "toString");
dumpProperty(myBook, "valueOf");
dumpProperty(myBook, "copyright");
Funktion dumpProperty(object, property) {
Var-Vererbung;
if (object.hasOwnProperty(property))
Vererbung = „Lokal“;
sonst
inheritance = „Geerbt“;
document.writeln(property ": " inheritance ": "
Objekt[Eigenschaft]);
}
查看浏览器支持javascript到哪个版本:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
<html xmlns="http://www.w3.org/1999/xhtml"> <Kopf> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Browser-JavaScript-Versionsunterstützungstest</title> </head> <Körper> <script language="JavaScript"> //document.write("Ihr Browsertyp:" navigator.appName "<br/>"); //document.write("Browserversion:" navigator.appVersion "<br/>"); //Browser, die JavaScript1.0 unterstützen, können dieses Skript ausführen
Document.write('Dieser Browser unterstützt JavaScript1.0<br/>');
</script> <script language="JavaScript1.1"> // Nur Browser, die JavaScript1.1 unterstützen, können dieses Skript ausführen
Document.write('Dieser Browser unterstützt JavaScript1.1<br/>');
</script> <script language="JavaScript1.2"> // Nur Browser, die JavaScript1.2 unterstützen, können dieses Skript ausführen
Document.write('Dieser Browser unterstützt JavaScript1.2<br/>');
</script> <script language="JavaScript1.3"> //Browser, die JavaScript1.3 unterstützen, können dieses Skript ausführen
Document.write('Dieser Browser unterstützt JavaScript1.3<br/>');
</script> <script language="JavaScript1.4"> //Browser, die JavaScript1.4 unterstützen, können dieses Skript ausführen
Document.write('Dieser Browser unterstützt JavaScript1.4<br/>');
</script> <script language="JavaScript1.5"> //Browser, die JavaScript1.5 unterstützen, können dieses Skript ausführen
Document.write('Dieser Browser unterstützt JavaScript1.5<br/>');
</script> <script language="JavaScript1.6"> //Browser, die JavaScript1.6 unterstützen, können dieses Skript ausführen
Document.write('Dieser Browser unterstützt JavaScript1.6<br/>');
</script> <script language="JavaScript1.7"> //Browser, die JavaScript1.7 unterstützen, können dieses Skript ausführen
Document.write('Dieser Browser unterstützt JavaScript1.7<br/>');
</script> <script language="JavaScript1.8"> // Nur Browser, die JavaScript 1.8 unterstützen, können dieses Skript ausführen
Document.write('Dieser Browser unterstützt JavaScript1.8<br/>');
</script> <script language="JavaScript1.9"> //Browser, die JavaScript1.9 unterstützen, können dieses Skript ausführen
Document.write('Dieser Browser unterstützt JavaScript1.9<br/>');
</script> </body> </html>

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Array mit der Array.Sort-Funktion in C# sortieren

Einfache und klare Methode zur Verwendung der PHP-Funktion array_merge_recursive()

So verwenden Sie die Funktion array_combine in PHP, um zwei Arrays zu einem assoziativen Array zu kombinieren

Detaillierte Erläuterung der Verwendung der PHP-Funktion array_fill()

So verwenden Sie das Array-Modul in Python

Was ist die Verwendung der Indexof-Methode in Java?

Was sind die häufigsten Ursachen für ArrayStoreException in Java?

Was sind die Unterschiede zwischen Indexof und Includes?
