Different between Object setPrototypeOf assign and for in

Hi all!

Can someone explain to me the difference between Object.setPrototypeOf() Object.assign() for(var i in objc1) { obj2[i] = objc1[i] }

Because the three option return the same

Thank you very much!!