hasOwnProperty vs for (var k=Object.keys(props), [...] vs for (var k_i=0;k_i<keys_l;k_i++ vs for (const key in Object.keys(props))