You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery 4.0中data.hasOwnProperty非函数问题求助(Cycle滑块场景)

jQuery 4.0下Cycle滑块data.hasOwnProperty is not a function错误修复方案

问题根源

jQuery 4.0中,$(element).data()返回的对象不再继承Object.prototype,导致无法直接调用hasOwnProperty方法,触发报错。

修复方案

以下两种方案任选其一即可:

  • 方案1:兼容所有ES版本的写法
    将原代码中的判断语句:

    if (data.hasOwnProperty(p) && /^cycle2[A-Z]+/.test(p) )
    

    替换为:

    if (Object.prototype.hasOwnProperty.call(data, p) && /^cycle2[A-Z]+/.test(p) )
    

    这种方式通过显式调用Object.prototype上的hasOwnProperty方法,并将data作为上下文传入,绕开了对象原型缺失的问题。

  • 方案2:ES2022+推荐写法
    若项目环境支持ES2022及以上标准,可使用更简洁安全的原生API:

    if (Object.hasOwn(data, p) && /^cycle2[A-Z]+/.test(p) )
    

    Object.hasOwn是专门用于判断对象自身属性的新API,无需担心上下文绑定问题,代码可读性更强。

效果说明

替换后,原代码的属性遍历与处理逻辑完全保留,同时完美适配jQuery 4.0的API变更,解决报错问题。

内容的提问来源于stack exchange,提问作者backups

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 09:21:05