• 属性类型



    2)属性类型

    数据属性(重要的话,在本身是true,在方法中默认是false

    [[Configurable]] 能否删除从而重新定义,能否修改属性的特性,能否把属性改为访问器属性

    [[Enumerable]]能否for-in

    [[writable]]能否写

    [[Value]]读写

    要修改属性的默认特性,可以使用Object.defineProperty(a,b,c)分别是属性所在的对象,属性的名字,一个描叙符对象(上面的四个中的一个或者多个

    var person=new Object();
    Object.defineProperty(person,"name",{writable:false,value:"fuck"});
    alert(person.name);
    person.name="you";//writable:false并不能修改
    alert(person.name);

    访问器属性

    [[Configurable]]能否删稠从而重新定义,能否修改属性的特性,能否把属性改为数据属性

    [[Enumerable]]for-in

    [[Get]]

    [[Set]]

    访问器属性不能直接定义,只能通过Object.defineProperty(a,b,c)来定义

    var book={
    _year:2004,
    edition:1
    };
    Object.defineProperty(book,"year",{
    get:function () {
    return this._year;
    },
    set:function (a){
    if(a>2004){
    this._year=a;
    this.edition+=a-2004;
    }
    }
    });
    book.year=2006;
    alert(book.edition);//3

    由于实际情况下一次要修改多个属性,所以有方法Object.defineProperties(a,b)分别为要修改的对象,第二个对象是对象的属性和修改的属性合在一起(请注意格式

                var book={};
                Object.defineProperties(book,{//字面量
                    _year:{
                        writable: true,//很关键
                        value:2004
                    },//逗号
                    edition:{
                        writable: true,
                        value:1
                    },
                    year:{
                        set:function  (a) {
                            if(a>2004){
                                this._year=a;
                                this.edition+=a-2004;
                            }
                        },
                        get:function  () {
                            return this._year;
                        }
                    }
                });
                console.log(book.year,book.edition);
                book.year=2007;
                console.log(book);

    读取属性特性

    Object.getOwnpropertyDescriptor(a,b)属性所在的对象和属性名称

    book.year=2007;
                var a=Object.getOwnPropertyDescriptor(book,"_year");
                console.log(a.value,a.configurable,a.writalbe);
  • 相关阅读:
    关于编码问题
    期中架构之前所有的命令-总结
    Bootstrap表格添加搜索栏
    Bootstrap表格分页(二)
    Bootstrap表格分页(一)
    Entity Framework 分页处理
    Protocol Buffers v3.0.0编译安装小记
    golang学习笔记
    Java 对象生命周期
    Java 操作符
  • 原文地址:https://www.cnblogs.com/vhyc/p/5769364.html
Copyright © 2020-2023  润新知