recorrer objetos objeto lista herencia for ejemplos crear convertir array javascript

objetos - ¿Hay alguna manera de imprimir todos los métodos de un objeto en javascript?



prototype javascript ejemplos (7)

Aquí hay una publicación sobre la reflexión de JS . Debería hacer lo que estás buscando.

¿Hay alguna manera de imprimir todos los métodos de un objeto en javascript?


Como los métodos en JavaScript son solo propiedades que son funciones, el bucle for..in los enumerará con una excepción: no enumerará los métodos incorporados. Hasta donde yo sé, no hay forma de enumerar los métodos integrados. Y no puede declarar sus propios métodos o propiedades en un objeto que no son enumerables de esta manera.


Desde aquí :

Ejemplo 1: Este ejemplo escribe todas las propiedades del objeto "navegador", más sus valores:

for (var myprop in navigator){ document.write(myprop+": "+navigator[myprop]+"<br>") }

Simplemente reemplace ''navigator'' con cualquier objeto que le interese y debería estar listo para continuar.

Como mencionó Anthony en la sección de comentarios: esto devuelve todos los atributos, no solo los métodos, como la pregunta solicitada.

Oops! Eso me enseñará a intentar responder una pregunta en un idioma que no sé. Aún así, creo que el código es útil, pero no lo que se requería.


Eche un vistazo a este código:

function writeLn(s) { //your code to write a line to stdout WScript.Echo(s) } function Base() {} Base.prototype.methodA = function() {} Base.prototype.attribA = "hello" var derived = new Base() derived.methodB = function() {} derived.attribB = "world"; function getMethods(obj) { var retVal = {} for (var candidate in obj) { if (typeof(obj[candidate]) == "function") retVal[candidate] = {func: obj[candidate], inherited: !obj.hasOwnProperty(candidate)} } return retVal } var result = getMethods(derived) for (var name in result) { writeLn(name + " is " + (result[name].inherited ? "" : "not") + " inherited") }

La función getMethod devuelve el conjunto de métodos junto con si el método es uno que se ha heredado de un prototipo.

Tenga en cuenta que si tiene la intención de utilizar esto en objetos que se suministran desde el contexto, como el navegador / objeto DOM, entonces no funcionará IE.


Por supuesto:

function getMethods(obj) { var result = []; for (var id in obj) { try { if (typeof(obj[id]) == "function") { result.push(id + ": " + obj[id].toString()); } } catch (err) { result.push(id + ": inaccessible"); } } return result; }

Utilizándolo:

alert(getMethods(document).join("/n"));


Aquí hay una muestra de ES6 .

// Get the Object''s methods names: function getMethodsNames(obj = this) { return Object.keys(this) .filter((key) => typeof this[key] === ''function''); } // Get the Object''s methods (functions): function getMethods(obj = this) { return Object.keys(this) .filter((key) => typeof this[key] === ''function'') .map((key) => this[key]); }

obj = this es un parámetro predeterminado de ES6, puede pasar un Objeto o lo hará por defecto.

Object.keys devuelve una matriz de las propiedades enumerables del objeto. Sobre la window Object devolverá [..., ''localStorage'', ...''location''] .

(param) => ... es una función de flecha ES6, es una forma abreviada de

function(param) { return ... }

con un retorno implícito

Array.filter crea una nueva matriz con todos los elementos que pasan la prueba ( typeof this[key] === ''function'' ).

Array.map crea una nueva matriz con los resultados de llamar a una función proporcionada en cada elemento de esta matriz (devuelve this[key] ).


Si solo desea ver qué hay dentro de un objeto, puede imprimir todas las claves del objeto. Algunos de ellos pueden ser variables, algunos - métodos.

El método no es muy preciso, sin embargo, es muy rápido:

console.log(Object.keys(obj));