私はこのように簡単だろうと思った:ネイティブ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、クローム、サファリ、オペラに、彼らはネイティブのすべてのプロパティ/メソッドを返しませんこのテストを使用してArrayオブジェクトを 'undefined'とします。
.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を使用するとは思っていませんでした。例えば プロトタイプhttp://www.devguru.com/technologies/JavaScript/10764.asp typeof http://www.devguru.com/technologies/JavaScript/11529.asp – scunliffe
これはそうですが、それだけではありません。 Douglas Crockford氏のプレゼンテーションをYUI Theater(http://developer.yahoo.com/yui/theater/)の "Advanced Javascript"で見てみることをお勧めします。オブジェクトプロトタイプの仕組みを含め、そこには素晴らしい "under the hood"というものがあります。 –
これは親プロトタイプ –