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
    }
  • 相关阅读:
    Hbase写数据,存数据,读数据的详细过程 分类: B7_HBASE 2015-03-15 20:11 117人阅读 评论(0) 收藏
    机器学习(十四):深度学习梯度优化算法(SGD SGD-M NAG AdaGrad RMSProp Adam )
    机器学习(十三):卷积神经网络(CNN)
    机器学习(十一):FP增长(FP-growth)
    机器学习(十):Apriori算法
    Gulp命令自动生成精灵图
    esLint参数设置
    js 监控iframe URL的变化
    React+Redux学习笔记:React+Redux简易开发步骤
    React组件实现越级传递属性
  • 原文地址:https://www.cnblogs.com/dsitn/p/7060691.html
Copyright © 2011-2022 走看看