javaScript 工作必知(八) 属性的特性 值、写、枚举、可配置

属性的特性

    每个对象都拥有属性,属性具有哪些特性呢?

    1、属性具有值。

     2、属性是否是可写的。

           3、是否是可枚举的。

           4、是否是可配置的。

 

 "use strict";//使用严格模式
        var descriptor = Object.getOwnPropertyDescriptor({ x: 1 }, "x");//获取匿名对象的值
        alert("value:" + descriptor.value + "\r\n writeable:" + descriptor.writable + "\r\n enumberable:" + descriptor.enumerable + "\r\n configurable:" + descriptor.configurable);//value: 1 writeable:true enumberable:true,configurable:true

        var baseDescriptor = Object.getPrototypeOf({ x: 2 });
        for(var p in baseDescriptor)
        {
            alert(p);//内置属性不可被枚举。
        }
        var o = {};
        Object.defineProperty(o, "y", { value: 1, writable: true, enumberable: false, configurable: true });//设置属性的特性。
        var oDescriptor = Object.getOwnPropertyDescriptor(o, "y");
       
        Object.defineProperties(o, {
            x: { value: 3, writable: false, enumberable: true, configurable: true },
            z: { get: function () { return this.x + 1; }, enumerable: true, configurable: true }//get表示只读属性,set可设计写属性。
        });
        alert(o.y);
        alert("\r\n value:" + oDescriptor.value + " \r\nwritable:" + oDescriptor.writable + "\r\n enumberable:" + oDescriptor.enumerable + "\r\n configurable:" + oDescriptor.configurable);
        alert(o.z);
        o.x = 4;
        alert(o.z);

  

 属性的修改遵循以下规则:

  如果对象是不可扩展的,则尅编辑已有的自有属性,但不能给他添加新的属性。

  如果对象是不可配置的,则不能修改他的可配置性和可枚举性。

  如果存取器属性是不可配置的,则不能修改其getter和setter方法,也不能将他转换为数据属性。

  如果数据属性是不可配置的,则不能将它转换为存取器属性。

  如果数据属性是不可配置的,则不能将它的可写性从false修改为true,但可以从true 修改为false.

  如果数据属性是不可配置的且不可写的,则不能修改它的值,然而可配置但不可写属性的值是可以修改的。(实际上是先将他标记为可写的,然后修改他的值,最后转换为不可写的。

summary

       属性,还需要继续研究才行。。。

转载于:https://www.cnblogs.com/fandong90/p/5543653.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值