Diferencias entre metodos concisos y funciones normales
const obj1 = {
// Sintaxis de metodo conciso (ES6)
metodo() {
// diferencia1: se puede accesar a super
console.log(super.toString === Object.prototype.toString)
}
};
const obj2 = {
metodo: function () {
}
};
// diferencia 2: el sintaxis conciso crea una funcion con nombre por defecto
// equivalente a ( { metodo: function metodo() {} } )
console.log(obj1.metodo.name); // "metodo"
console.log(obj2.metodo.name); // undefined
// diferencia 3: las funciones que resultan de la declaracion de un metodo conciso
// no son "construibles" ( no se pueden usar con el operador `new` )
try {
new obj1.metodo()
} catch (error) {
console.log(error); // TypeError: obj1.metodo is not a constructor
}
console.log(new obj2.metodo()) // no hay error
no comments