2¢!実際、私がこれをここに投げ出す理由の1つは、長い答えのリストにもかかわらず、もう少しall in one
タイプソリューションを提供し、それをさらに含めるために拡張する方法について将来のフィードバックを得るためreal types
です。
前述のように、次の解決策を使用して、ここにあるいくつかの解決策を組み合わせ、jQueryで定義されたオブジェクトの値を返すための修正を組み込みます(可能な場合)。また、メソッドをネイティブObjectプロトタイプに追加します。他の拡張機能に干渉する可能性があるため、多くの場合タブーはタブーですが、それはに任せています。この方法が気に入らない場合は、ベース関数を好きな場所にコピーし、のすべての変数を引数パラメーター(arguments [0]など)に置き換えてください。jQueryuser beware
this
;(function() { // Object.realType
function realType(toLower) {
var r = typeof this;
try {
if (window.hasOwnProperty('jQuery') && this.constructor && this.constructor == jQuery) r = 'jQuery';
else r = this.constructor && this.constructor.name ? this.constructor.name : Object.prototype.toString.call(this).slice(8, -1);
}
catch(e) { if (this['toString']) r = this.toString().slice(8, -1); }
return !toLower ? r : r.toLowerCase();
}
Object['defineProperty'] && !Object.prototype.hasOwnProperty('realType')
? Object.defineProperty(Object.prototype, 'realType', { value: realType }) : Object.prototype['realType'] = realType;
})();
次に、次のように簡単に使用します:
obj.realType() // would return 'Object'
obj.realType(true) // would return 'object'
注:渡せる引数は1つです。がブール値の場合true
、戻り値は常に小文字になります。
その他の例:
true.realType(); // "Boolean"
var a = 4; a.realType(); // "Number"
$('div:first').realType(); // "jQuery"
document.createElement('div').realType() // "HTMLDivElement"
別のライブラリ(Moo、Proto、Yui、Dojoなど)を使用してオブジェクトが作成された時期を定義するなど、何か追加すべきことがあれば、遠慮なくコメントまたは編集してください。正確かつ正確。または、GitHub私が作成したものにロールオーバーして知らせてください。また、そこにcdn minファイルへのクイックリンクがあります。
typeof new RegExp(/./); // "function"