zoukankan      html  css  js  c++  java
  • 属性类型


    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);
  • 相关阅读:
    HDU_1711 Number Sequence(KMP)
    快速排序+归并排序
    贪心算法
    HDU_1496 Equations && POJ_1840 Eqs(Hash)
    POJ_1328 Radar Installation(贪心)
    HDU_1055 && POJ_2054 Color a Tree(贪心)
    HDU_1754 I Hate It (线段树)
    哈希(Hash)表学习笔记
    jQuery插件datepicker的使用详解
    json总结
  • 原文地址:https://www.cnblogs.com/vhyc/p/5769364.html
Copyright © 2011-2022 走看看