lo que estoy tratando de hacer es una clase que crea un objeto, agrega otros objetos y le agrega contenido sin tener que escribir varias líneas de
var obj = document.createElement('input'); obj.value = 'this value'; obj.appendChild(anotherObject)aquí está el código:
class gerarNode{ constructor(input){ this.nodetype = input; this.node = document.createElement(input); } toAppend(appends){ this.node.appendChild(appends); } }lo que espero en la consola del navegador:
var jorge = new gerarNode('div').toAppend(anotherNodeObject) // Object {"nodetype": "div", etc, etc}lo que consigo:
var jorge = new gerarNode('div').toAppend(anotherNodeObject) // undefinedpero lo más extraño es que si llamo solo al método constructor, devolverá un objeto "div" tal como quería, simplemente no funciona si llamo a cualquier método en la clase
var jorge = new gerarNode('div') // Object {"nodetype": "div"}Si no ejecuta una declaración de return en una función, devuelve undefined .
Para implementar una interfaz fluida, todas las funciones de modificación deberían devolver this .
class gerarNode { constructor(input) { this.nodetype = input; this.node = document.createElement(input); } toAppend(appends) { this.node.appendChild(appends); return this; } } let anotherNodeObject = document.createElement("div"); var jorge = new gerarNode('div').toAppend(anotherNodeObject); console.log(jorge);