码迷,mamicode.com
首页 > Web开发 > 详细

JS属性描述符

时间:2017-04-18 14:31:43      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:console   特性   als   ons   logs   div   efi   conf   value   

var myObject = {
            a:2
        };
        Object.getOwnpropertyDescriptor(myObject,"a");
        {
            value:2,
            writable:true,
            emumerable:true,
            configurable:true
        }

这段代码中的属性描述符不仅只有2,还有writable(可写)、enumerable(可枚举)、configurable(可配置)三种

 

在创建普通属性时属性描述符会使用默认值,我们也可以使用 Object.defineProperty(...)添加一个新属性或者修改一个已有属性(如果是configurable)并对特性进行设置

代码示例:

var myObject = {};
        Object.defineProperty(myObject,"a",{
            value:2,
            writable:true,
            configurable:true,
            emumerable:true
        });
        console.log(myObject.a);//2

 

下面是对这三个属性描述符的介绍:

1)writable:决定是否可以修改属性的值

var myObject = {};
        Object.defineProperty(myObject,"a",{
            value:2,
            writable:false,
            configurable:true,
            emumerable:true
        });
        myObject.a = 3;
        console.log(myObject.a);//2

解析:writable:false 可以看作为属性不可改变,在严格模式("use strict";)下,引擎会抛出TypeError的异常,这表示我们无法修改一个不可写的属性

 

2)configurable:只要属性是可配置的,就可以使用 defineProperty(...)方法来修改属性描述符

注意!!

a)在false情况下,如果修改,不管是不是严格模式,都会抛出TypeError的错误

b)在这种情况下,我们仍可以将可写性的状态由true改为false

c)delete属性也会被禁止(delete myObject.a;)

 

3)emumerable:可枚举,如果将它设置为false,则这个属性将不会出现在枚举中,但可以正常访问他

 

  

  

 

 

 

 

JS属性描述符

标签:console   特性   als   ons   logs   div   efi   conf   value   

原文地址:http://www.cnblogs.com/wccc/p/6727185.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!