¿Qué hace el símbolo '#' en JavaScript?
Encontré un código que contenía el #letrero. ¿Para qué se usa esto? El código se parece a esto:
class someObject{
#someMethod(){
//do something
}
}
Respuestas
Es un sigilo (en lugar de un operador) que indica que el miembro es privado; en este caso, un método privado , pero también se usa para campos privados .
No puede usar un método privado o un campo privado en el código fuera de la clase que los declara. Por ejemplo:
class Example {
doSomething() {
this.#method("from doSomething"); // <== Works
}
#method(str) {
console.log("method called: " + str);
}
}
const e = new Example();
e.doSomething();
e.#method(); // <=== FAILS
Esta es una propuesta experimental. Puede definir métodos de JavaScript privados utilizando#
Para obtener más información, puede consultar los documentos de MDN
Las propiedades de la clase son públicas de forma predeterminada y se pueden examinar o modificar fuera de la clase. Sin embargo, existe una propuesta experimental que permite definir campos de clase privados utilizando un
#prefijo hash .
Puede lograr algo similar usando ES5 (solo para simplificar la explicación), donde puede simular algo como métodos privados (que JavaScript no tiene uno de forma nativa).
Por ejemplo:
function someObj() { //assuming this is a class definition
function someMethod() { //private method which is not accessible outside someObj
}
function init() { //initializes some methods or code, private methods can be used here
someMethod();
}
return {
init //only exposes the init method outside
}
}
En lo anterior, solo expondrá el initmétodo desde el someObjcual se puede llamar como someObj.init(), mientras que su someMethodno será accesible fuera de su método principal.
Ejemplo:
someObj.init(); //works
someObj.someMethod(); //won't be accessible
hash se utiliza para definir campos de clase privados