我想這將是那麼容易,因爲:如何確定本地JavaScript對象是否具有屬性/方法?
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!
}
而且它在Firefox正常工作,但不是在IE,Chrome瀏覽器,Safari,Opera或,它們將返回所有屬性/原生的方法使用此測試將數組對象定義爲「未定義」。
.hasOwnProperty(prop)方法只適用於實例...所以它不起作用,但通過試驗和錯誤,我注意到這是有效的。
//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
}
有什麼錯誤使用這種語法,以確定是否存在一個本地對象/〜「JavaScript類」〜屬性/方法,還是有更好的方法來做到這一點?
有趣......我讀到.prototype只是爲了向對象添加新的屬性/方法,我沒有想到對它使用typeof。例如 prototype http://www.devguru.com/technologies/JavaScript/10764.asp typeof http://www.devguru.com/technologies/JavaScript/11529.asp – scunliffe 2009-02-27 18:41:25
就是這樣,是的,但不僅限於此。我建議您在YUI Theatre(http://developer.yahoo.com/yui/theater/)上觀看道格拉斯克羅克福德關於「高級Javascript」的演示 - 那裏有一些很棒的「底層」東西,包括對象原型如何工作。 – 2009-02-27 19:53:32
這將不會看到父代原型中定義的屬性 – 2011-11-30 23:47:52