Dos formas, pero ligeramente diferentes.
1. en operador
Copie el código de código de la siguiente manera:
var obj = {nombre:'jack'};
alerta('nombre' en obj); // --> verdadero
alert('toString' en obj); // --> verdadero
Se puede ver que tanto el nombre como el toString en la cadena del prototipo se pueden detectar y devolver verdadero.
2. método hasOwnProperty
Copie el código de código de la siguiente manera:
var obj = {nombre:'jack'};
obj.hasOwnProperty('nombre'); // --> verdadero
obj.hasOwnProperty('toString'); // --> falso
Las propiedades heredadas en la cadena de prototipos no se pueden detectar a través de hasOwnProperty y se devuelve false.
Cabe señalar que, aunque puede detectar las propiedades de la cadena prototipo, normalmente no puede.
Por supuesto, después de reescribir el prototipo, será visible en IE9/Firefox/Safari/Chrome/Opera. Ver: Errores de for in