标签:des io ar os 使用 sp java on bs
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
标签:des io ar os 使用 sp java on bs
原文地址:http://my.oschina.net/ososchina/blog/350383