Thisify — Convierte argumentos en propiedades
Considera una función constructora, foo:
const foo = function(x, y, z)
{
this.x = x
this.y = y
this.z = z
}foo recibe tres parámetros, x, y, z. Al crear una instancia de foo, esta recibe las propiedades x, y, z.
const bar = new foo(1, 2, 3)
// bar.x = 1
// bar.y = 2
// bar.z = 3El objetivo de este desafío es lograr un resultado equivalente sin asignar las propiedades explícitamente. En su lugar, crea una función thisify para hacerlo de forma automática y dinámica.
Así debería verse foo:
const foo = function(x, y, z)
{
thisify(this, Object.values(arguments))
}
// same as before!
const bar = new foo(1, 2, 3)
// bar.x = 1
// bar.y = 2
// bar.z = 3thisify recibe dos argumentos:
/**
* @param {Object} instance - instance of the class
* @param {Array} passed - arguments (values) passed to parameters of constructor
*
* @returns {void(0)}
*/
function thisify(instance, passed)
{
// your code here
}Al ejecutarse, se espera que thisify asigne propiedades con el mismo nombre y valor que el argumento. Por ejemplo, si el argumento x recibe un valor de 2, el objeto debe tener una propiedad "x" con un valor de 2.
Ejemplos
const rectangle = function(l, w, color)
{
thisify(this, Object.values(arguments))
}
console.log(new rectangle(5, 10, "Red")) ➞
{
l: 5,
w: 10,
color: "Red"
}
console.log(new rectangle(3, 4)) ➞
{
l: 3,
w: 4,
color: undefined
}Notas
- Si algún argumento no está definido, asígnale
undefined. - Usa la sección Resources si necesitas ayuda.