これは次のように簡単だと思いました:
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では正常に動作しません。このテストを使用すると、ネイティブ Array オブジェクトのすべてのプロパティ/メソッドが「未定義」として返されます。
.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
}
プロパティ/メソッドがNative Object / ~"JavaScript Class"~に存在するかどうかを判断するためにこの構文を使用することに何か問題がありますか、またはこれを行うためのより良い方法はありますか?