Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

188
Views
¿Cómo fuerzo el uso de un método para asignar variables de clase en Javascript?

Estoy creando una clase en Javascript (Nota: en realidad estoy usando Google Apps Script, pero esta debería ser una pregunta genérica de Javascript).

Dentro de la clase hay una matriz de objetos, específicamente una matriz de otra clase que he declarado. Quiero asegurarme de que la matriz contenga SOLO instancias de mi clase.

Aquí está lo básico de lo que tengo:

 class subClassA { constructor(name) { this.name = name; this.mode = new Modes; //Creates instance of another custom class (not shown here) Object.seal(this); //Prevents adding new or removing any extensions to object without editing this class } } class subClassACollection { constructor() { this.array = []; Object.seal(this); //Prevents adding new or removing any extensions to object without editing this class return this.array; //Returns the array when used in formulas rather than the object } } class class1 { constructor(name) { this.name = name; this.mode = new Modes; this.collection = new subClassACollection; Object.seal(this); //Prevents adding new or removing any extensions to object without editing this class } addtoCollection(sca) { if (sca instanceof subClassA) { this.collection.push(subClassA); } else if (typeof sca == "string") { this.collection.push(new subClassA(sca)); } else { //Incomplete, should generate an error or message to user here } } }

Lo que quiero hacer es forzar el uso del método '.addtoCollection' para agregar otro objeto subClassA a la colección/matriz para garantizar que solo se puedan agregar instancias de objetos subClassA y nada más.

Tenía la esperanza de hacer que la matriz fuera de su propia clase, eso la enterraría en una capa profunda y no la haría accesible. Pensé que usar la declaración de return anterior haría que devolviera la matriz para leer los valores sin que sea modificable desde el exterior. Para mi sorpresa, simplemente puedo hacer una asignación como class1.collection = 'hi' que agrega una cadena o cualquier otra variable o tipo de objeto a la matriz/colección. ¡No quiero ser capaz de hacer eso! Quiero asegurarme de que lo único que se puede agregar a esa matriz sea del tipo subClassA . ¿Cómo logro eso con una clase?

NOTA: he visto cómo hacer esto con una función, pero quiero hacerlo completamente dentro de la clase si es posible, por lo que estas propiedades son inherentes a las variables que estoy creando, en lugar de asignar una salida de función a otra variable. Si se puede hacer con un método dentro de la clase, está bien, pero no sé cómo mantener las variables dentro del método "vivas" para la próxima llamada (similar a un método estático en C).

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

En general, JavaScript no tiene características de seguridad como esta. Habiendo dicho eso, recientemente obtuvimos campos privados , por lo que si eso es compatible con su entorno, debería poder proteger su matriz de collection de esa manera.

 class Collection { #array; constructor() { this.#array = [] } add (thing) { if (isOK(thing)) this.#array.push(thing) } get (index) { return this.#array[index] } }
about 4 years ago · Juan Pablo Isaza Report

0

Desea crear un getter/setter. la colección debe ser un getter/setter.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!