javascript - Les attributs configurables et énumérables des données d'objet et des accesseurs ne sont pas vrais par défaut?
大家讲道理
大家讲道理 2017-06-26 10:58:19
0
3
637
    var book = {};
    
    Object.defineProperties(book, {
        _year: {
            value: 2004
        },
        
        edition: {
            value: 1
        },
        
        year: {            
            get: function(){
                return this._year;
            },
            
            set: function(newValue){
                if (newValue > 2004) {
                    this._year = newValue;
                    this.edition += newValue - 2004;
                }                  
            }            
        }        
    });
       
    var descriptor = Object.getOwnPropertyDescriptor(book, "_year");
    alert(descriptor.value);          //2004
    alert(descriptor.configurable);   //false
    alert(typeof descriptor.get);     //"undefined"
    
    var descriptor = Object.getOwnPropertyDescriptor(book, "year");
    alert(descriptor.value);          //undefined
    alert(descriptor.enumerable);     //false
    alert(typeof descriptor.get);     //"function"
    

    以下这两行看不懂
    alert(descriptor.configurable);   //false
    alert(descriptor.enumerable);     //false
    对象默认的可配置属性和可枚举属性是true吧
    示例代码未设置这两个属性,默认的应该为true吧
    
    PS:红宝书6.1.3(24印143页)
大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

répondre à tous(3)
黄舟

Les propriétés configurables par défaut et les propriétés énumérables de l'objet sont vraies

C'est correct, mais cela fait référence à ne pas utiliser defineProperty或者defineProperties的时候,使用它们的时候,那两个属性默认为false.

Les propriétés énumérables sont les propriétés dont l'indicateur interne [[Enumerable]] est défini sur true, qui est la valeur par défaut pour les propriétés créées via une simple affectation ou via un initialiseur de propriété (propriétés définies via Object.defineProperty et telles valeurs par défaut [[Enumerable ]] à faux).

définir les propriétés

漂亮男人

Ce manuel API contient des instructions et la valeur par défaut est false.

ringa_lee

Le livre de l'enveloppe rouge indique que pour les propriétés définies directement sur l'objet, leur valeur par défaut est vraie, quelque chose comme ceci,
`

 ;
var book = {
    a: 1   //默认configurable就是ture
}
//以下不同
Object.defineProperty(book,{
    b:{
        value: 5 //为配置configurable,则默认false
    },
    c:{
        value:4,
        configurable: true //有配置,为true
    }
})

`
J'ai sorti mon livre à enveloppe rouge. Oui, cela signifie des attributs directement définis sur l'objet. La fonctionnalité configurable est par défaut vraie. Non, vous pouvez afficher les valeurs configurables de 'a', 'b',. et 'c'.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal