看undersource.js源碼中nonEnumerableProps函數貌似是為了把對象中不可遍歷的屬性加入key返回,而源碼注釋中提到ie9以下枚舉bug,測試過hasEnumBug值都是為false,那collectNonEnumProps函數就不會被執行了,其次~返回這些不可遍歷的屬性值應該沒有什么用處吧~再者為什么要單獨處理constructor屬性,相關源碼如下:function collectNonEnumProps(obj, keys) { var nonEnumIdx = nonEnumerableProps.length; var constructor = obj.constructor; var proto = (_.isFunction(constructor) && constructor.prototype) || ObjProto; // Constructor is a special case. var prop = 'constructor'; if (_.has(obj, prop) && !_.contains(keys, prop)) keys.push(prop); while (nonEnumIdx--) { prop = nonEnumerableProps[nonEnumIdx]; if (prop in obj && obj[prop] !== proto[prop] && !_.contains(keys, prop)) { keys.push(prop); } } }
undersource.js源碼中nonEnumerableProps函數作用
慕的地8271018
2018-09-04 18:19:13