我刚刚通过modenizers自己的hasownproperty函数版本,并遇到了以下脚本:
_hasOwnProperty = ({}).hasOwnProperty, hasOwnProp;
if ( !is(_hasOwnProperty, 'undefined') && !is(_hasOwnProperty.call, 'undefined') ) {
hasOwnProp = function (object, property) {
return _hasOwnProperty.call(object, property);
};
}
else {
hasOwnProp = function (object, property) {
// DIFF what below line means I.E. object.constructor.prototype[property] ask J
return ((property in object) && is(object.constructor.prototype[property], 'undefined'));
};
}
如果你查看了secound hasOwnProp函数,你会在里面看到以下内容:
is(object.constructor.prototype[property], 'undefined')
在现代化程序中,条件的定义是这样的:
function is( obj, type ) {
return typeof obj === type;
}
但我不明白的是这个检查,如下所示:
is(object.constructor.prototype[property], 'undefined');
为什么在属性的构造函数上检查undefined?这是什么感觉?谁能解释一下?