Object 的 hasOwn 方法如果指定的对象自身有指定的属性则返回 true如果属性是继承的或者不存在则返回 falsefor in 循环会遍历原型属性和自身属性constprotoObj{protoProp:我是原型属性,protoMethod:function(){console.log(原型方法);},};constmyObjObject.create(protoObj);myObj.ownProp我是自身属性;myObj.ownMethodfunction(){console.log(自身方法);};for(constkeyinmyObj){console.log(key);}# 输出结果 ownProp ownMethod protoProp protoMethodObject.hasOwn()旨在取代Object.prototype.hasOwnProperty()constprotoObj{protoProp:我是原型属性,protoMethod:function(){console.log(原型方法);},};constmyObjObject.create(protoObj);myObj.ownProp我是自身属性;myObj.ownMethodfunction(){console.log(自身方法);};console.log(---------- hasOwn 方法);for(constkeyinmyObj){console.log(key,Object.hasOwn(myObj,key));}console.log(---------- hasOwnProperty 方法传统方法);for(constkeyinmyObj){console.log(key,myObj.hasOwnProperty(key));}# 输出结果 ---------- hasOwn 方法 ownProp true ownMethod true protoProp false protoMethod false ---------- hasOwnProperty 方法传统方法 ownProp true ownMethod true protoProp false protoMethod false