提取自jQuery的源码
function selfType(obj) {
// 判断null
if (obj == null) {
return obj + "";
}
// 判断其他类型
const class2type = {};
"Boolean Number String Function Array Date RegExp Object Error Symbol"
.split(" ")
.forEach((name) => {
class2type["[object " + name + "]"] = name.toLowerCase();
});
const toString = class2type.toString;
return typeof obj === "object" || typeof obj === "function"
? class2type[toString.call(obj)] || "object"
: typeof obj;
}
var myUndefined;
var myNull = null;
var myString = "Hello, World!";
var myNumber = 42;
var myArray = [1, 2, 3];
var myDate = new Date();
var myBoolean = true;
var myFunction = function () {
return "Hello, jQuery!";
};
var myObject = { key: "value" };
// 使用$.type来判断类型
console.log(myUndefined, selfType(myUndefined)); // "undefined"
console.log(myNull, selfType(myNull)); // "null"
console.log(myString, selfType(myString) === 'string'); // "string"
console.log(myNumber, selfType(myNumber)); // "number"
console.log(myArray, selfType(myArray)); // "array"
console.log(myDate, selfType(myDate)); // "date"
console.log(myBoolean, selfType(myBoolean)); // "boolean"
console.log(myFunction, selfType(myFunction)); // "function"
console.log(myObject, selfType(myObject)); // "object"
console.log("-----------------------");
console.log(myUndefined, $.type(myUndefined)); // "undefined"
console.log(myNull, $.type(myNull)); // "null"
console.log(myString, $.type(myString)); // "string"
console.log(myNumber, $.type(myNumber)); // "number"
console.log(myArray, $.type(myArray)); // "array"
console.log(myDate, $.type(myDate)); // "date"
console.log(myBoolean, $.type(myBoolean)); // "boolean"
console.log(myFunction, $.type(myFunction)); // "function"
console.log(myObject, $.type(myObject)); // "object"
下面是百度的ai写的代码,提取一下也可以使用
if (typeof jQuery === "undefined") {
var jQuery = {};
}
jQuery.type = function(obj) {
// 针对 null 的特殊处理
if (obj === null) {
return "null";
}
// 针对 undefined 的特殊处理
if (obj === undefined) {
return "undefined";
}
// 使用 Object.prototype.toString 来获取类型信息
var type = Object.prototype.toString.call(obj).slice(8, -1);
// 针对数组的特殊处理
if (type === 'Array' || typeof obj.length === 'number' && typeof obj.splice === 'function' && typeof obj.push === 'function') {
return 'array';
}
// 返回标准的类型名称
return type;
};
// 使用示例
console.log(jQuery.type({})); // "object"
console.log(jQuery.type([])); // "array"
console.log(jQuery.type(null)); // "null"
console.log(jQuery.type(undefined)); // "undefined"
console.log(jQuery.type(123)); // "number"
console.log(jQuery.type('string')); // "string"
console.log(jQuery.type(true)); // "boolean"
console.log(jQuery.type(function(){})); // "function"