首页 > 代码库 > javascript Object类方法的使用

javascript Object类方法的使用

1.获得属性名称

var o = {    
         p1: 123,     
         p2: 456
          };  
Object.keys(o);//获得可枚举的属性名称
// ["p1", "p2"] 
Object.getOwnPropertyNames(o); //获得全部属性名称
// ["p1", "p2"]

2.获得属性的信息描述

var o = { p: ‘a‘ }; 
Object.getOwnPropertyDescriptor(o, ‘p‘)

// Object { value: "a",           writable: true,           enumerable: true,           configurable: true  }

3.定义一个属性

Object.defineProperty(object, propertyName, attributesObject)

第一个参数是目标对象,第二个参数是属性名称,第三个时属性描述

var o = Object.defineProperty({}, "p", {        
                    value: 123,         
                    writable: false, //是否可写        
                    enumerable: true,         
                    configurable: false }); 
                    o.p // 123 
                    o.p = 246; 
                    o.p // 123 // 因为writable为false,所以无法改变该属性的值

定义多个属性

var o = Object.defineProperties({}, {   
                                            p1: { value: 123, enumerable: true },         
                                            p2: { value: "abc", enumerable: true },         
                                            p3: { 
                                                    //get: function() { return this.p1+this.p2 }, 
                                                    value: this.p1+this.p2,               
                                                    enumerable:true,//是否可枚举            
                                                    configurable:true //是否可修改属性描述   
                                                    } 
                                        }); o.p1 // 123 o.p2 // "abc" o.p3 // "123abc"

注意,get不能和value或writable同时出现来描述统一属性


4.属性是否可枚举的检查

Object.prototype.propertyIsEnumerable()

user.propertyIsEnumerable(‘toString‘);


5.禁止对象动态扩展

Object.preventExtensions(object);
var o = new Object(); 
Object.isExtensible(o) 
// true 
Object.preventExtensions(o);
 Object.isExtensible(o)

6.冻结对象,使其成为常量对象(无法扩展属性和方法)

var o = {p:"hello"}; 
Object.freeze(o); 
o.p = "world"; 
o.p 
// hello 
o.t = "hello";
 o.t // undefined


javascript Object类方法的使用