Object.prototype.toString
to dobry sposób, ale jego wydajność jest najgorsza.
http://jsperf.com/check-js-type
Zastosowanie typeof
rozwiązać podstawowe problemy (String, Number, Boolean ...) i używać Object.prototype.toString
rozwiązać coś złożonego (jak Array, data, RegExp).
i to jest moje rozwiązanie:
var type = (function(global) {
var cache = {};
return function(obj) {
var key;
return obj === null ? 'null' // null
: obj === global ? 'global' // window in browser or global in nodejs
: (key = typeof obj) !== 'object' ? key // basic: string, boolean, number, undefined, function
: obj.nodeType ? 'object' // DOM element
: cache[key = ({}).toString.call(obj)] // cached. date, regexp, error, object, array, math
|| (cache[key] = key.slice(8, -1).toLowerCase()); // get XXXX from [object XXXX], and cache it
};
}(this));
zastosowanie jako:
type(function(){}); // -> "function"
type([1, 2, 3]); // -> "array"
type(new Date()); // -> "date"
type({}); // -> "object"
Zapraszamy do obejrzenia tego artykułu: http://javascriptweblog.wordpress.com/2011/08/08/fixing-the-javascript-typeof-operator/ –
Spójrz na ten post: http: //stackoverflow.com/questions/332422/how-do-i-get-the-name-of-an-objects-type-in-javascript – isJustMe
http://tobyho.com/2011/01/28/checking- types-in-javascript/ – airportyh