Ga
Ga
  • 发布:2015-03-11 16:08
  • 更新:2015-03-11 17:56
  • 阅读:1442

[报BUG]MUI.js 131行对象判断错误

分类:MUI
mui

我这是持续一天一个bug的回报节奏啊,愁死人的代码质量

mui.js 131行$.isWindow的判断 obj !==null 这个判断如果写成 obj != null就没问题
偏偏要装高端用了 !==
那么问题来了,如果obj=undefined 瞬间出局
var obj=undefined;
console.log(obj !== null)
会打印一个true出来,接下来下一句中的obj.window就会直接抛异常,而且未被捕获,剩下的处理全部停止
而且我是在ajax过程中出现这个问题的,ajax会用到对window的判断也让人很费解

2015-03-11 16:08 负责人:无 分享
已邀请:
DCloud_UNI_FXY

DCloud_UNI_FXY

1.已修复obj!==null的问题。

2.ajax中并非是直接调用isWindow判断,而是为了区分plainObject,间接调用了isWindow。

3.目前建议自己过滤ajax参数,排除掉undefined的参数,或设置为其他自己可以识别的空值

Ga

Ga (作者) - 前后端各种语言全沾工程师

isPlainObject这个方法中

Object.getPrototypeOf(window) === Object.prototype
本来也是个false啊

我对 !mui.isWindow(window) 和 Object.getPrototypeOf(window) === Object.prototype;
做了100000循环测试,相差无几,前面那个判断完全没必要嘛,而且如果对象本身不是窗口的话还多做次判断

@DCloud_MUI_FXY

DCloud_UNI_FXY

DCloud_UNI_FXY

并列使用isWindow和getPrototypeOf是考虑到浏览器兼容性。IE低版本不支持getPrototypeOf,所以提前使用了isWindow做识别

该问题目前已经被锁定, 无法添加新回复