Tengo un código fuente como este
const item = function(p) { let model; p.setup = function() { } } No estoy seguro de cómo debo llamar a esta class . function component ?
Lo que quiero hacer es agregar mi función a esto y llamar a esta función desde afuera.
const item = function(p) { let model; p.setup = function() { } function nextGame(){ console.log("test"); } } item.nextGame(); // errorSin embargo, no funciona.
No estoy familiarizado con este estilo de javascript.
¿Cómo debo agregar la función a esto (¿es clase?) y llamar?
Para la programación orientada a objetos en javascript, existen algunos métodos, como se menciona en los comentarios.
Una función de fábrica es un enfoque simple, ya que simplemente crea y devuelve un objeto.
function Item(model) { const item = { model, nextGame: () => { console.log('test') } } return item } const itemInstance = Item('Tesla'); itemInstance.nextGame() console.log(itemInstance.model)Utiliza la nueva palabra clave para crear una instancia del tipo de objeto definido. Utiliza el prototipo de la función, al que se puede acceder en todas las instancias del tipo.
function Item(model) { this.model = model; } Item.prototype.nextGame = () => { console.log('test') } const itemInstance = new Item('Tesla'); itemInstance.nextGame() console.log(itemInstance.model)También podrías usar una Clase . Las clases en javascript se proporcionan como una abstracción de funciones.
class Item { constructor(model) { this.model = model } nextGame() { console.log('test') } } const itemInstance = new Item('Tesla'); itemInstance.nextGame() console.log(itemInstance.model)Lo que describe y demuestra en su fragmento de javascript es una función anónima, incluso podría decir que es una variable funcional.
Para acceder a los métodos que utilizan la notación de puntos, debe crear una clase (u objeto JavaScript).
ejemplo usando la palabra clave 'clase':
class MyClass { var name; var lastName; constructor(_name, _lastname) { this.name = _name; this.lastName = _lastname; } sayMyName() { window.alert(`${this.name} ${this.lastname}`); } }Ahora cree una instancia de esta clase. Como esto:
const myName = new MyClass("John", "Doe");y ahora llame con el método de su clase usando notación. Como esto:
myName.sayMyName(); class Item { // private field for whatever // got passed to the constructor. #value; constructor(value) { this.#value = value; } // prototypal methods with access to // private fields and private methods. setup() { // do something with `this.#value` console.log(this.#value); } nextGame() { console.log("next game"); } } const item = new Item("OP's mysterious `p` value"); console.log({ item }); console.log('item.setup() ...'); item.setup(); console.log('item.nextGame() ...'); item.nextGame(); .as-console-wrapper { min-height: 100%!important; top: 0; }