A propriedade de um objeto em JavaScript possui três propriedades:
1.Widade. Esta propriedade é gravável?
2.Numerável. Ao usar a declaração for/in, a propriedade será enumerada?
3.Configurável. Se as propriedades da propriedade podem ser modificadas e se a propriedade pode ser excluída.
No padrão ECMAScript 3, os valores das três propriedades acima são verdadeiras e não podem ser alteradas: a propriedade do objeto recém -criada é gravável, enumerável e excluível; o objeto da propriedade (descritor da propriedade) para configurar e modificar essas propriedades.
Se as informações de valor da propriedade também forem usadas como atributo da propriedade, a propriedade no objeto possui quatro propriedades: valor, gravável, enumerável e configurável.
Para propriedades definidas pelos métodos Getter e Setter, uma vez que eles não possuem propriedades graváveis (a propriedade gravável depende se o método do setter existe), essa propriedade também possui quatro propriedades: obtenha, definir, enumerável e configurável - obtenha e defina propriedades O valor de 'é função'.
Obtenha a propriedade da propriedade do objeto
No padrão ECMAScript 5, as informações da propriedade de uma determinada propriedade do objeto em si podem ser obtidas através do object.GetownPropertyDescriptor ():
A cópia do código é a seguinte:
var o = {x: 1};
var a = object.create (o);
ay = 3;
console.log (object.getownPropertyDescriptor (a, "y")); // objeto {configuurável = true, enumerável = true, writable = true, value = 3}
console.log (object.getownPropertyDescriptor (a, "x")); // indefinido
Como você pode ver, se a propriedade não existir ou a propriedade herdar do objeto Prototype, indefinido será retornado.
Defina as propriedades da propriedade do objeto
No padrão Ecmascript 5, as propriedades de uma determinada propriedade de um objeto em si podem ser definidas através do object.DefineProperty ():
A cópia do código é a seguinte:
Object.DefineProperty (A, "Y", {
Valor: 3,
gravável: verdadeiro,
enumerável: falso,
Configuração: true
});
console.log (A.Propertyisenumerable ("y")); // false
Se a propriedade Set for herdada do objeto Prototype, o JavaScript criará uma propriedade com o mesmo nome no próprio objeto, o que é consistente com o comportamento relevante da operação de atribuição:
A cópia do código é a seguinte:
Object.DefineProperty (a, "x", {
Valor: 1,
gravável: verdadeiro,
enumerável: falso,
Configuração: true
});
console.log (A.Propertyisenumerable ("x")); // false
console.log (O.PropertyIsenumerable ("X")); // true
Além de modificar as propriedades da propriedade, você também pode alterar a propriedade para acessar com getter ou setter:
A cópia do código é a seguinte:
Object.DefineProperty (A, "Y", {
get: function () {return 42;}
});
console.log (AY); // 42
Ao usar o Object.DefineProperty (), o valor da propriedade do objeto de descrição da propriedade pode ser parcialmente ignorado.
Se a propriedade for criada recentemente, todos os valores de propriedades ignorados serão falsos ou indefinidos.
Se a propriedade já existir, todos os valores de propriedades ignorados permanecem como estão.
Defina propriedades da propriedade do objeto em lotes
Se você precisar definir propriedades de várias propriedades de uma só vez, poderá usar a instrução Object.DefineProperties (). Esta declaração retorna o objeto modificado.
A cópia do código é a seguinte:
Object.DefineProperties (a, {
"y": {value: 79, gravável: verdadeiro, enumerável: verdadeiro, configurável: true},
"Z": {Value: 99, gravável: verdadeiro, enumerável: verdadeiro, configurável: true}
});
console.log (a); // objeto {y = 79, z = 99}
Propriedade Propriedade da propriedade Regras de configuração
Ao modificar as propriedades da propriedade, as seguintes regras devem ser seguidas. Se as regras forem violadas, o JavaScript relatará um erro TypeError:
Se o objeto não for extensível, você só poderá modificar as propriedades da propriedade existente e não poderá adicionar uma nova propriedade.
Se a propriedade configurável da propriedade for falsa, os valores das propriedades configuráveis e enumeráveis não poderão ser modificadas. Se a propriedade for definida por Getter e Setter, os métodos Getter e Setter não poderão ser modificados.
Se a propriedade configurável da propriedade e a propriedade gravável forem falsas, o valor da propriedade não poderá ser alterado. Se a propriedade gravável da propriedade for falsa, mas sua propriedade configurável for verdadeira, o valor da propriedade ainda poderá ser modificado.