问题描述:在做项目的时候,发现点击某个三级菜单,最后面多出了一个undefinde菜单,点击其余的正常。
原因分析:通过分步调试,发现循环对象的时候多循环了一次。猜测可能是遍历了原型链上的属性,多循环的属性名没有对应的值,所以默认为undefined。
解决办法:进循环的时候先判断是否是私有属性
for (var key in obj) {
if (!obj.hasOwnProperty(key)) {
// 如果不是私有属性,则继续下一次循环
continue;
}
}
问题描述:在做项目的时候,发现点击某个三级菜单,最后面多出了一个undefinde菜单,点击其余的正常。
原因分析:通过分步调试,发现循环对象的时候多循环了一次。猜测可能是遍历了原型链上的属性,多循环的属性名没有对应的值,所以默认为undefined。
解决办法:进循环的时候先判断是否是私有属性
for (var key in obj) {
if (!obj.hasOwnProperty(key)) {
// 如果不是私有属性,则继续下一次循环
continue;
}
}