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
    }
  • 相关阅读:
    JAVA相关基础的知识吧
    Java测试调用.net 接口服务
    Java测试内存信息
    Java测试普通Java接口记录-TestHrmInterface
    那些年学不会的操作(写法/...)——记录一些靠搜索做过但总是记不住的东西
    正确的sybase批量插入语法
    新ZJJG项目相关接口开发记录-微信制证组成浅析
    bip项目的启用/调试+ 问题记录
    记录数组问题
    模糊匹配的查询条件/ 给下拉框加提示呢
  • 原文地址:https://www.cnblogs.com/dsitn/p/7060691.html
Copyright © 2011-2022 走看看