¿Cómo comprobar la existencia de los métodos move() y run() de forma rápida y segura? hasOwnProperty devuelve falso, por supuesto, tanto para mover como para ejecutar. dog.prototype no está definido, por lo que esta no es una forma de comenzar.
class Animal { constructor(name) { this.name = name; } speak() { console.log(`${this.name} makes a noise.`); } move() // this method may exist or not { console.log(`${this.name} moves over.`); } } class Dog extends Animal { constructor(name) { super(name); } speak() { console.log(`${this.name} barks.`); } run() // this method may exist or not { console.log(`${this.name} runs fast.`); } } var dog = new Dog('Caesar'); // in the real-world situation we don't know the type of "dog" here.¿Cómo comprobar si dog.run() existe y es invocable? ¿Cómo comprobar si dog.move() existe y es invocable?
Editar: las preguntas y respuestas marcadas para duplicados ( comprobar si el constructor de clases define el método ) no responden a mi pregunta.
La nota de comentario final en mi publicación original es importante: en la situación del mundo real no sabemos el tipo de "perro" . Por lo tanto, no puedo escribir Animal.prototype o Dog.prototype porque no conozco Animal y/ o Perro. todo lo que tengo es
new ClassName instrucción ClassName donde ClassName es una clase definida por la sintaxis de clase.