Jquery判断类型的$.type方法提取

本文详细分析了jQuery源码中的selfType函数,用于判断JavaScript对象的类型,同时对比了与$.type方法的区别,展示了如何通过原型链和特定属性来识别不同数据类型的实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 提取自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"

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值