No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Getters y setters

13/19
Recursos

Aportes 9

Preguntas 6

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Reg铆strate o inicia sesi贸n para participar.

Respondiendo la pregunta del profe 馃槀 Seg煤n la RAE, caracter no existe, solo existe car谩cter, y hace referencia a varias definiciones, entre ellas, 鈥淪igno de escritura鈥:

Lo cual es raro porque la mayor铆a de personas lo pronuncian con acento en la e (incluy茅ndome), y car谩cter (para m铆) hace referencia al conjunto de cualidades que definen la forma de ser de un ser vivo鈥 Pero, para la RAE, ambas cosas se desprenden de la misma palabra, car谩cter.

Los Getters y setters son m茅todos de acceso, lo que significa que generalmente son una interfaz publica para cambiar miembros de las clases privadas.

Getters y setters

get name() {
  return private["_name"];
},
set name(newName) {
  newName.length !==0 ? private["_name"] = newName : console.warn("Name can't be empty");
}

GETTERS Y SETTERS

Utilizamos el m茅todo est谩tico del prototipo object getOwnPropertyDescriptor().
Una funci贸n obtiene un valor de una propiedad se le llama getter y una que setea(establece) un valor de una propiedad se le llama setter
Para crearlos simplemente necesitan los keywords get y set


const obj = {
    get prop(){
        return this.__prop__;
    },
    set prop() {
        this.__prop__ = value * 2 ;
    },
};
obj.prop = 12;

console.log(obj.prop); // 24

Se crea un objeto, con una 煤nica propiedad, tiene un getter y un setter. De esta manera cada vz que le establezcamos un alor a la propiedad, el valor se multiplicar谩 por 2.

se puede crear un accessor properties es e manera expl膰ita usando Object.defineProperty()

Object.defineProperty(obj,//objeto target
'prop', //nombre de la propiedad)
 {
    enumerable:true,
    configurable:true,
    get prop(){
        return this.__prop__;
    },
    set prop(value){
        this.__prop__ = value * 2;
    },
};

obj.prop = 12;
var atr = Object.getOwnProperyDescriptor(obj,'prop');
console.log(atr); // {value: 24, writable: true, enumerable: true, configurable: true}

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/set
La sintaxis get vincula una propiedad de objeto a una funci贸n que se llamar谩 cuando se busque esa propiedad.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get
La sintaxis set vincula una propiedad de objeto a una funci贸n que se llamar谩 cuando se intente establecer esa propiedad.

Hay una forma m谩s simple de hacer lo visto en la clase anterior y es usar getters y setters:

  • cambiamos 鈥榬eadName鈥 por
get name(){
	return private._name
}
  • cambiamos 鈥榗hangeName鈥 por
set name(anotherName){
	if(true){ //ac谩 validamos
		private._name = anotherName
	}
}

Las ventajas son:

  • C贸digo reducido y m谩s limpio
  • Permiten hacer validaciones (al contrario de crear un atributo 鈥渘ame鈥)
  • No creamos una propiedad 鈥榥ame鈥 por error (en vez de cambiar _name)

No hace falta que protejamos los getters y setters, la 煤nica forma de redefinir 鈥渘ame鈥 es con Object.defineProperty. Esto elimina las funciones y crea un nuevo atributo name, que aunque no afecta a _name hace imposible acceder a 茅l.

Para usar el acento en la 鈥榓鈥 ponemos: 鈥榎u00E1鈥 dentro de la cadena que vamos a imprimir en pantalla.

Que clase de magia oscura es esta :v 鈥 Es broma, excelente eso de Getters y Setters

Primera cosa que me gusta de JS contra otros lenguajes que si realmente parecen orientados a objetos