收藏
回答

JS 的 instanceof 原型链判断错误!

问题模块
API和组件

奇奇怪怪的环境问题,直接看图吧。



最后一次编辑于  2017-08-04  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

16 个回答

  • LastLeaf
    LastLeaf
    2017-08-07

    你好,这里Function应该是个特例。

    2017-08-07
    赞同
    回复
  • 不爱吃西红柿的鱼
    不爱吃西红柿的鱼
    2017-08-07

    啥意思?意思是在小程序里的 Function 是体例???那这个还要不要修复啊

    2017-08-07
    赞同
    回复
  • LastLeaf
    LastLeaf
    2017-08-07

    其实JS内置的Function对象是被覆盖掉了的(出于安全的考虑)。instanceof作用于别的对象应该是没问题的。

    2017-08-07
    赞同
    回复
  • 不爱吃西红柿的鱼
    不爱吃西红柿的鱼
    2017-08-07

    不知道方便透露一下么,什么样的场景会触发这个安全问题

    2017-08-07
    赞同
    回复
  • LastLeaf
    LastLeaf
    2017-08-07

    请问你需要用这个语句做什么吗?

    2017-08-07
    赞同
    回复
  • 不爱吃西红柿的鱼
    不爱吃西红柿的鱼
    2017-08-07

    主要是我们的业务用到的一个依赖,里面用 instanceof 做的类型判断,不是很方便改其代码。感觉你们这样改了默认定义不友好啊

    2017-08-07
    赞同
    回复
  • LastLeaf
    LastLeaf
    2017-08-07

    这个限制我们应该不会调整,估计只有改一下依赖库的代码了。

    2017-08-07
    赞同
    回复
  • LastLeaf
    LastLeaf
    2017-08-07

    或者你试下这个trick:


    a = function(){ return 'aaa' }

    Object.setPrototypeOf(a, Function.prototype)
    a instanceof Function // === true

    2017-08-07
    赞同
    回复
  • 不爱吃西红柿的鱼
    不爱吃西红柿的鱼
    2017-08-07

    嗯,这个确实能跑通,但那部分代码在依赖的函数里面,直接改依赖不太优雅啊。。。

    2017-08-07
    赞同
    回复
  • 🙈子凡🔴
    🙈子凡🔴
    2017-08-08

    我也遇到同样的问题,见:https://developers.weixin.qq.com/blogdetail?action=get_post_info&docid=804bc8c48f8088b72f52269386ba5e4d&token=1311609329&lang=zh_CN


    希望能跟 chrome保持一样的结果,否则像 https://github.com/date-fns/date-fns 这种大量优秀的第三方模块则不能使用

    2017-08-08
    赞同
    回复