对象数据和访问器可配置和可枚举特性默认的不是true吗?

    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"

    

https://img3.mukewang.com/5c1c9ab100014e8a03220120.jpg

慕勒3428872
浏览 433回答 1
1回答

Cats萌萌

对象默认的可配置属性和可枚举属性是true吧这个没错,但是这个指的是不使用defineProperty或者defineProperties的时候,使用它们的时候,那两个属性默认为false。Enumerable properties are those properties whose internal [[Enumerable]] flag is set to true, which is the default for properties created via simple assignment or via a property initializer (properties defined via Object.defineProperty and such default [[Enumerable]] to false).defineProperties
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript