Benim 2 ¢! Gerçekten, uzun cevaplar listesine rağmen, bunu buraya atmamın nedeninin bir kısmı, biraz daha all in one
tip bir çözüm sağlamak ve gelecekte daha fazlasını içerecek şekilde nasıl genişleteceğiniz konusunda geri bildirim almaktır real types
.
Aşağıdaki çözümle, yukarıda belirtildiği gibi, burada bulunan birkaç çözümü birleştirdim ve mevcutsa , jQuery tanımlı nesnenin değerini döndürmek için bir düzeltmejQuery ekledim . Yöntemi yerel Object prototipine de ekliyorum. Bu tür uzantılara müdahale edebileceğinden, bunun genellikle tabu olduğunu biliyorum, ama bunu bırakıyorum . Bunu yapmaktan hoşlanmıyorsanız, temel işlevi istediğiniz yere kopyalayın ve tüm değişkenlerini aktarmak için bir argüman parametresiyle değiştirin (argümanlar [0] gibi).user 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;
})();
O zaman bu şekilde kolayca kullanın:
obj.realType() // would return 'Object'
obj.realType(true) // would return 'object'
Not: 1 argüman iletilebilir. Eğer bool ise true
, geri dönüş her zaman küçük harf olur .
Daha fazla örnek:
true.realType(); // "Boolean"
var a = 4; a.realType(); // "Number"
$('div:first').realType(); // "jQuery"
document.createElement('div').realType() // "HTMLDivElement"
Başka bir kitaplıkla (Moo, Proto, Yui, Dojo, vb.) Bir nesnenin ne zaman oluşturulduğunu tanımlamak gibi yararlı olabilecek bir şey varsa, lütfen bunu yorumlamaktan veya düzenlemek ve daha fazla olmaya devam etmek için çekinmeyin doğru ve kesin. VEYA GitHubbunun için yaptım ve bana bildirin. Ayrıca orada bir cdn min dosyasına hızlı bir bağlantı bulacaksınız.
typeof new RegExp(/./); // "function"
Chrome'daki sorun Chrome 14'te giderilmiş gibi görünüyor.