• JavaScript的访问器


    一、访问器属性:

      1、Configurable:表示能否通过delete删除属性,从而重新定义属性,能否修改属性的特性,或者能否把属性修改为数据属性。对于直接在对象上定义的属性,这个特性的默认值为true,表示可以使用delete删除该属性;对于使用Object.defineProperty方式定义的属性,这个特性默认值是false,表示不能使用delete删除该属性。

      举例:

    var obj = {};
    Object.defineProperty(obj,'name',{
        value : '何莉莉'
    });
    obj.age='23';
    
    delete obj.name;//返回值false,严格模式下会报错,属性不会被正常删除。
    delete obj.age;//返回值true,属性可以被正常删除。

      2、Enumerable:表示能否通过for - in 循环返回属性。对于直接在对象上定义的属性,这个特性的默认值为true,表示可以使用for - in循环返回属性;对于使用Object.defineProperty方式定义的属性,这个特性的默认值为false,表示不能使用for - in 循环返回属性。

    for(one in obj){
        console.log(one+": "+obj[one]);
    }
    //结果中不包含使用Object.defineProperty定义的name属性结果
    //age: 23

      3.get:在读取属性时调用的函数。默认值undefined。

      4.set:在写入属性时调用的函数。默认值undefined。

    //下面以类似的双向绑定为例,表明给属性赋值时候,如何使用set和get方法。
    var obj = {
        temp : '',
        array : [],
        push : function(val){
            this.temp = val;
        }
    };
    
    
    Object.defineProperty(obj,'temp',{
        set:function(val){
            obj.array.push(val);
        },
       get:function(){
         return obj.array;
       }
    });
    
    obj.push("亲");
    obj.push("爱");
    obj.push("的");
    obj.push("你");
    //结果
    obj.array;//直接从对象中获取
    obj.temp;//走get方法

     二、定义多个属性

      ECMAScript5定义了一个Object.definPropertis()方法。利用此方法可以通过描述符一次定义多个属性。这个方法接受两个对象参数:第一个对象是添加和修改其属性的对象,第二个对象的属性与第一个对象中要添加或修改的属性一一对应。

    例如:

    var book = {};
    Object.defineProperties(book,{ _year:{ writable : true, value : 2004 }, edition:{ writable:true, value:1 }, year:{ get:function(){ return this._year; }, set:function(newValue){ if(newValue > 2004){ this._year = newValue; this.edition += newValue - 2004; } } } });
    //结果:

     三、读取属性的四个特性

    var remote = Object.getOwnPropertyDescriptor(book,'_year');
    
    for(var node in remote){
        
        console.log(node + ":" + remote[node]);
    
    }
    
    //结果
    
    
    
     
     
  • 相关阅读:
    南昌大学2021年数学分析考研试卷
    南昌大学2021年高等代数考研试卷
    吉林大学2021年数学分析考研试卷
    吉林大学2021年高等代数与解析几何考研试卷
    华中师范大学2021年高等代数考研试卷
    华中农业大学2021年数学分析考研试卷
    2021年清华大学丘成桐数学领军计划综合测试数学试题参考解析
    华中科技大学2021年数学分析考研试卷
    华中科技大学2021年高等代数考研试卷
    华东师范大学2021年数学分析考研试卷
  • 原文地址:https://www.cnblogs.com/pecool/p/11484671.html
Copyright © 2020-2023  润新知