zoukankan      html  css  js  c++  java
  • js之oop <三>属性标签

    读取属性标签

    获取对象属性标签,用 Object.getOwnPropertyDescriptor方法。
    getOwnPropertyDescriptor(); 参数属性所在对象(object),属性名(string)

    var obj = { code:2,element:"ele" };
    Object.getOwnPropertyDescriptor(obj,"code");
    //输出 { value: 2, writable: true, enumerable: true, configurable: true }

    getOwnPropertyDescriptor返回该属性标签的对象。
    value      属性值
    writeable    属性是否可写(是否可修改)
    enumerable    属性是否可枚举(是否在for in遍历中出现)
    configurable   属性的其他属性标签是否可修改或者该属性是否可delete
    一般方式添加这四个属性标签默认都是true

    ****************************************************************************************************************

    定义属性标签

    定义对象属性标签,用 Object.defineProperty()方法。
    defineProperty(); 参数目标对象(object),属性名(string),属性标签(object json(对象字面量)格式创建)

    这里defineProperty的第三个参数的属性包括:valuewriteableenumerableconfigurable。value必须赋值,writeableenumerableconfigurable默认都为false。

    var obj = {};
    Object.defineProperty(obj,"o_name",{
        value:"obj_name",
        writeable:false,
        enumerable:false,
        configurable:false
    });
    obj.o_name = "New_name";    //输出 obj_name
    //writeable为false,所以无法修改该属性值。
    delete obj.o_name;          //返回 false
    //configurable为false,所以无法被delete。
    Object.keys(obj)            //返回空集合
    //enumerable为false,所以无法遍历

    批量定义属性标签

    定义对象属性标签,用 Object.defineProperties()方法。
    defineProperties(); 参数目标对象(object),批量属性标签(object json(对象子面量)格式创建)

    function o(){};
    var o1 = new o();
    Object.defineProperties(o1,{a:{value:1,enumerable:true},
                                b:{value:2,writable:true},
                                c:{value:3,configurable:true,writable:true}});
    Object.getOwnPropertyDescriptor(o1,"a");
    //返回 { value: 1,writable: false,enumerable: true,configurable: false }
    Object.getOwnPropertyDescriptor(o1,"b");
    //返回 { value: 2,writable: true,enumerable: false,configurable: false }
    Object.getOwnPropertyDescriptor(o1,"c");
    //返回 { value: 2,writable: true,enumerable: false,configurable: true }

    ****************************************************************************************************************

    遍历对象属性

    遍历对象属性除了用for in还可以用 Object.keys()方法。
    keys(); 参数遍历对象(object)。
    keys()返回对象属性的数组。

    var obj = { a:1,b:2,c:3,d:4 };
    obj.e = 5;
    Object.keys(obj);
    //返回 [ 'a', 'b', 'c', 'd', 'e' ]
    Object.defineProperty(obj,"e",{value:15,enumerable:false});
    Object.keys(obj);
    //返回 [ 'a', 'b', 'c', 'd' ]
    obj.e;  //输出 15
  • 相关阅读:
    三部曲搭建本地nuget服务器(图文版)
    用批处理编译*.sln工程
    一组无序的整数找出出现次数大于一半的数字
    程序打怪升级之旅
    web开发有那些牛逼东西可以用
    Visual Studio for mac从入门到放弃1
    svn自动更新服务器最新代码
    WinRT支持GB2312
    初试Node —— node.js的安装
    为什么要重写equals方法和hashcode方法
  • 原文地址:https://www.cnblogs.com/MirageFox/p/5860565.html
Copyright © 2011-2022 走看看