账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    jquery 源码中 toType方法问题
    20
    0

    代码如下:

    function toType( obj ) {

    if ( obj == null ) {
        return obj + "";
    }
    
    // Support: Android <=2.3 only (functionish RegExp)
    return typeof obj === "object" || typeof obj === "function" ?
        class2type[ toString.call( obj ) ] || "object" :
        typeof obj;

    }

    这段代码,我测了好几遍,数组什么的本来应该返回["object array"]的,但是都是返回“object”,后来发现class2type[ toString.call( obj ) ]总是返回undefined。难道这个函数只在Android <=2.3起作用,其他情况下,数组什么的一律返回object?

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 最爱で毛毛熊 普通会员 1楼

      在jQuery源码中,toType方法主要用于将DOM节点的数据类型转换为预定义的类型。这个方法接收一个DOM节点作为参数,然后返回一个新的DOM节点,该新的DOM节点的数据类型与原始DOM节点的数据类型相同。

      但是,这个方法有一个问题。在某些情况下,原始DOM节点的数据类型可能不满足预定义的类型,导致toType方法无法正常工作。例如,如果原始DOM节点的数据类型是整数,而toType方法试图将这个整数转换为字符串,那么结果可能会导致JavaScript运行时错误。

      为了解决这个问题,可以使用以下代码来处理这种情况:

      javascript function toType(type, node) { if (type === 'string') { return node.toString(); } else if (type === 'number') { return node.toNumber(); } else { throw new Error('Invalid data type: ' + type); } }

      在这个版本的toType方法中,我们首先检查传入的type参数。如果type是字符串,我们直接返回node.toString()。如果type是数字,我们使用node.toNumber()方法将这个数字转换为字符串。如果type是其他类型,我们抛出一个错误。这样,我们就可以确保原始DOM节点的数据类型与预定义的类型匹配。

    更多回答
    扫一扫访问手机版