Ich dachte, das so einfach wäre wie:Wie kann festgestellt werden, ob das native JavaScript-Objekt eine Eigenschaft/Methode hat?
if(typeof(Array.push) == 'undefined'){
//not defined, prototype a version of the push method
// Firefox never gets here, but IE/Safari/Chrome/etc. do, even though
// the Array object has a push method!
}
Und es in Firefox fein funktioniert, aber nicht in IE, Chrome, Safari, Opera, kehren sie alle Eigenschaften/Methoden des nativen Array-Objekt als "undefiniert" mit diesem Test.
Die .hasOwnProperty (prop) -Methode funktioniert nur auf Instanzen ... so funktioniert es nicht, aber durch Versuch und Irrtum habe ich festgestellt, dass dies funktioniert.
//this works in Firefox/IE(6,7,8)/Chrome/Safari/Opera
if(typeof(Array().push) == 'undefined'){
//not defined, prototype a version of the push method
}
Gibt es etwas falsch mit dieser Syntax auf eine india Object/~ „JavaScript Klasse“ ~, wenn eine Eigenschaft/Methode existiert, um zu bestimmen verwenden oder gibt es einen besseren Weg, dies zu tun?
Interessant ... Ich habe gelesen, dass .prototype nur zum Hinzufügen neuer Eigenschaften/Methoden zu Objekten gedacht war, ich dachte nicht, typeof darauf zu verwenden. z.B. Prototyp http://www.devguru.com/technologies/JavaScript/10764.asp typeof http://www.devguru.com/technologies/JavaScript/11529.asp – scunliffe
Es ist für das, ja, aber nicht nur dafür . Ich empfehle Douglas Crockfords Präsentation über "Advanced Javascript" im YUI Theatre (http://developer.yahoo.com/yui/theater/) - dort gibt es einige großartige "unter der Haube" Zeug, einschließlich der Funktionsweise von Prototypen. –
Dies wird nicht die Eigenschaften in übergeordneten Prototypen –