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
    }
  • 相关阅读:
    Binary Tree Maximum Path Sum
    ZigZag Conversion
    Longest Common Prefix
    Reverse Linked List II
    Populating Next Right Pointers in Each Node
    Populating Next Right Pointers in Each Node II
    Rotate List
    Path Sum II
    [Leetcode]-- Gray Code
    Subsets II
  • 原文地址:https://www.cnblogs.com/dsitn/p/7060691.html
Copyright © 2011-2022 走看看