jQuer源码学习(2):$.isPlainObject(obj)
jQuer源码学习(二):$.isPlainObject(obj)
/** * 判断是否为object * @param {Object} obj */ isPlainObject: function(obj){ //必须是object /** * 因为IE,我们还必须检查构造器属性,以确保节点对象和窗口对象也不能通过 */ if (!obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow(obj)) { return false; } try { // 如果obj没有constructor属性并且obj的原型链中没有obj返回false if (obj.constructor && !hasOwn.call(obj, "constructor") && !hasOwn.call(obj.constructor.prototype, "isPrototypeOf")) { return false; } } catch (e) { // IE8,9 会抛出 throw exceptions on certain host return false; } var key; for (key in obj) { } /** * 如果key不会被赋值则返回fasle */ return key === undefined || hasOwn.call(obj, key); },