zoukankan      html  css  js  c++  java
  • javascript属性操作

    属性的读写


    //属性添加
    var obj = {x:1,y:2};
    
    obj.z  = 3;
    
    obj["m"] = 4;
    //属性的读取
    var obj =  {x: 1, y: 2, z: 3, m: 4};
    
    for(p in obj){
     console.info(p);
    }

     属性的删除


     

    var person = {age:45,name:"tom"};
    
    person.age  //45
    
    delete person.age   //true
    
    person.age  //undefined

    属性标签【configurable】

    var obj = {age:1,name:"cat"};
    
    Object.getOwnPropertyDescriptor(obj,'age');    

    //Object {value: 1, writable: true, enumerable: true, configurable: true}; //getOwnPropertyDescriptor()方法--查看age的属性标签 Object.defineProperty(obj,'age',{configurable:false});

    //设置age属性configurable标签为false【表示age属性不可配置】 Object.getOwnPropertyDescriptor(obj,'age'); Object {value: 1, writable: true, enumerable: true, configurable: false}; delete obj.age //false obj.age //1

    不能删除的特殊情况


     1 var定义的全局变量与局部变量

    var globalValue = 90;
    
    delete globalValue  //false
    
    (function(){
       var localValue  = 90;
       return delete localValue;
    })();   //false

    //隐式的创建全局变量是可以删除的
    yinshi = 90;
    
    delete yinshi  //true
    
    

    2 全局定义函数与局部定义的函数

    function test(){}
    delete test;   //false
    
    
    (function(){
        function localfunction(){};
        return delete localfunction;   //false
    })();

    判断属性是否存在


    var dog = {};
    
    dog.name = "dong";
    
    dog.age = 89;
    
    "name" in dog;  //true
    
    "abc" in dog  //false
    
    "toString" in  dog //true    //in操作符 会查找原型链。
    
    dog.hasOwnProperty('name');  //true
    
    dog.hasOwnProperty('toString');  //false   不查找原型链用hasOwnProperty方法

    属性的枚举


    var o = {x:1,y:2,z:3}
    
    
    for(key in o){
       console.info(key)   //x  y z
    }

    Object.keys(o) //["x", "y", "z"]

    【Enumerable】属性标签


    var o = {x:1,y:2,z:3}
    
    //propertyIsEnumerable 检测属性的【Enumerable】为true or false
    
    o.propertyIsEnumerable('x')  //true
    
    o.propertyIsEnumerable('y')  //true
    
    o.propertyIsEnumerable('z')  //true
    
    o.propertyIsEnumerable('toString') //false
    
    
    //只有propertyIsEnumerable为true的属性,可以枚举
    for(key in o){
       console.info(key)   //x y z
    }
    var o = {x:1,y:2,z:3}
    
    //设置对象的x属性【enumerable】标签为false
    
    Object.defineProperty(o,'x',{enumerable:false})
    
    o.propertyIsEnumerable('x')  //false
    
    for(key in o){
       console.info(key)   //y z
    }
  • 相关阅读:
    梦断代码阅读笔记03
    用户场景分析
    学习进度8
    学习进度7
    梦断代码阅读笔记02
    学习进度6
    随堂小测app(nabcd)
    梦断代码阅读笔记01
    《构建之法》-6
    《构建之法》-5
  • 原文地址:https://www.cnblogs.com/dsitn/p/7060691.html
Copyright © 2011-2022 走看看