Realmente no tiene mucho misterio, muestra en la consola todas las variables. Quizás lo que te confunde es la línea 13: hasOwnProperty verifica que una propiedad es propia del objeto, y no viene desde el prototipo. Es decir,
Código Javascript
:
Ver originalvar obj = { 'prop' : 'valor' };
obj.hasOwnProperty('prop'); // true
obj.hasOwnProperty('valueOf'); // false
Porque valueOf es parte del prototipo de Object.
El operador && es el operador lógico AND. Supongo que lo habrás visto dentro de condicionales:
Cita: if(cond1 && cond2 && cond3 ...)
Sin embargo, también se puede usar para evitar el propio if:
Código:
if(cond){ alert('algo'); }
// se puede abreviar
cond && alert('algo');
Debido al shortcircuit. Esto es, cuando usamos el operador &&, nada más se encuentre un valor false (o falsy), se devolverá ese valor (igual que si se usa || parará al encontrar cualquier valor que se pueda dar por true).
Entonces, si cond es verdadero, continuará para ver si el próximo valor es falso, y se ejecutará el alert, pero si es falso se devolverá false y se detendrá la ejecución.
Espero haberme explicado bien
Saludos (: