La propiedad de un objeto en JavaScript tiene tres propiedades:
1.Writable. ¿Es esta propiedad escribida?
2.Enumerable. Al usar la declaración for/in, ¿se enumerará la propiedad?
3. Configurable. Si las propiedades de la propiedad pueden modificarse y si la propiedad se puede eliminar.
En el estándar EcMascript 3, los valores de las tres propiedades anteriores son verdaderas y no se pueden cambiar: la propiedad del objeto recién creado es redactado, enumerable y eliminable; El objeto de propiedad (descriptor de propiedad) para configurar y modificar estas propiedades.
Si la información de valor de la propiedad también se usa como atributo de propiedad, la propiedad en el objeto tiene cuatro propiedades: valor, escritura, enumerable y configurable.
Para las propiedades definidas por los métodos getter y setter, ya que no tienen propiedades de escritura (la propiedad de escritura depende de si existe el método setter), esta propiedad también tiene cuatro propiedades: obtener, establecer, enumerable y configurable: obtener las propiedades del valor de 'es función'.
Obtenga la propiedad de la propiedad del objeto
En el estándar EcMascript 5, la información de la propiedad de una determinada propiedad del objeto en sí se puede obtener a través de Object.getOwnPropertyDescriptor ()::
La copia del código es la siguiente:
var o = {x: 1};
var a = object.create (o);
ay = 3;
console.log (object.getOwnPropertyDescriptor (a, "y")); // objeto {configurable = true, enumerable = true, writable = true, valor = 3}
console.log (object.getownpropertyDescriptor (a, "x")); // indefinido
Como puede ver, si la propiedad no existe o la propiedad hereda del objeto prototipo, se devuelve indefinido.
Establezca las propiedades de la propiedad del objeto
En el estándar EcMascript 5, las propiedades de una determinada propiedad de un objeto en sí se pueden establecer a través de Object.DefineProperty ()::
La copia del código es la siguiente:
Objeto.defineProperty (a, "y", {
Valor: 3,
WRATITY: verdadero,
enumerable: falso,
Configuración: Verdadero
});
console.log (a.propertyisenumerable ("y")); // falso
Si la propiedad establecida se hereda del objeto prototipo, JavaScript creará una propiedad del mismo nombre en el objeto en sí, que es consistente con el comportamiento relevante de la operación de asignación:
La copia del código es la siguiente:
Objeto.defineProperty (a, "x", {
Valor: 1,
WRATITY: verdadero,
enumerable: falso,
Configuración: Verdadero
});
console.log (a.propertyisenumerable ("x")); // falso
console.log (O.PropertyIsenumerable ("x")); // Verdadero
Además de modificar las propiedades de la propiedad, también puede cambiar la propiedad para acceder con Getter o Setter:
La copia del código es la siguiente:
Objeto.defineProperty (a, "y", {
get: functer () {return 42;}
});
console.log (ay); // 42
Al usar Object.DefineProperty (), el valor de la propiedad de la propiedad de la propiedad se puede ignorar parcialmente.
Si la propiedad se crea recientemente, todos los valores de propiedad ignorados son falsos o indefinidos.
Si la propiedad ya existe, todos los valores de propiedad ignorados permanecen como está.
Establecer propiedades de la propiedad del objeto en lotes
Si necesita establecer propiedades de múltiples propiedades a la vez, puede usar la instrucción Object.defineProperties (). Esta declaración devuelve el objeto modificado.
La copia del código es la siguiente:
Objeto.defineProperties (a, {
"y": {valor: 79, Writable: True, enumerable: verdadero, configurable: verdadero},
"Z": {Valor: 99, Writable: True, Enumerable: True, Configurable: True}
});
console.log (a); // objeto {y = 79, z = 99}
Propiedad Propiedad Configuración de propiedad Reglas
Al modificar las propiedades de la propiedad, se deben seguir las siguientes reglas. Si se violan las reglas, JavaScript informará un error de typeError:
Si el objeto no es extensible, solo puede modificar las propiedades de la propiedad existente y no puede agregar una nueva propiedad.
Si la propiedad configurable de la propiedad es falsa, los valores de las propiedades configurables y enumerables no se pueden modificar para la propiedad de escritura, se puede cambiar de verdadero a falso, pero no se puede cambiar de falso a verdadero. Si la propiedad está definida por Getter y Setter, los métodos Getter y Setter no se pueden modificar.
Si la propiedad configurable de la propiedad y la propiedad de escritura son falsas, el valor de la propiedad no se puede cambiar. Si la propiedad de escritura de la propiedad es falsa pero su propiedad configurable es verdadera, el valor de la propiedad aún se puede modificar.