Para ver los métodos disponibles para un objeto que puedo hacer:
console.log(Object.getOwnPropertyNames(Object)); Pero entonces, ¿por qué no da las propiedades cuando le paso una instancia de un tipo de objeto en particular (espero que esa sea la terminología correcta?). Por ejemplo, en el siguiente n tiene un método llamado toFixed pero no aparece cuando intenta obtener los nombres de las propiedades.
let n = 1234.567; console.log(n.toFixed(1)); console.log(Object.getOwnPropertyNames(n));getOwnPropertyNames , como suena, obtiene solo las propiedades propias del objeto.
Pero los números son primitivos, no objetos, y toFixed está en Number.prototype , no en las instancias de Number. El número no tiene propiedades propias.
console.log(Object.getOwnPropertyNames(Number.prototype));Para otro ejemplo, con un objeto propio:
class X { protoMethod(){} } const x = new X(); // Empty: console.log(Object.getOwnPropertyNames(x)); // The prototype has the own-property of the method: console.log(Object.getOwnPropertyNames(X.prototype));Prueba Object.getPrototypeOf . Todos los métodos están definidos en el prototipo del objeto.
console.log(Object.getPrototypeOf(n));