ho pensato che questo sarebbe stato facile come:Come determinare se l'oggetto JavaScript nativo ha una proprietà/metodo?
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!
}
E funziona bene in Firefox, ma non in IE, Chrome, Safari, Opera, tornano tutte le proprietà/metodi del nativo Matrice dell'oggetto come 'indefinito' usando questo test.
Il metodo .hasOwnProperty (prop) funziona solo su istanze ... quindi non funziona, ma per tentativi ed errori ho notato che funziona.
//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
}
qualcosa che non va con l'utilizzo di questa sintassi per determinare se una proprietà/metodo esiste su un Native Oggetto/~ "Class JavaScript" ~, o c'è un modo migliore per fare questo?
Interessante ... Ho letto che .prototype era solo per aggiungere nuove proprietà/metodi agli oggetti, non pensavo di usare typeof su di esso. per esempio. prototipo http://www.devguru.com/technologies/JavaScript/10764.asp typeof http://www.devguru.com/technologies/JavaScript/11529.asp – scunliffe
È per quello, sì, ma non SOLO per quello . Raccomando di guardare la presentazione di Douglas Crockford su "Advanced Javascript" nel Teatro YUI (http://developer.yahoo.com/yui/theater/) - ci sono alcune fantastiche cose "sotto il cofano", incluso il funzionamento dei prototipi degli oggetti. –
questo non vedrà le proprietà definite nei prototipi principali –