- 如何判断对象中是否包含一个属性
var Person = {
name : 'wenzhe',
number : 91
};
// checks for both own properties and prototype properties
console.log('number' in Person); // true
console.log('constructor' in Person); // true
// only checks for own properties
console.log(Person.hasOwnProperty('number')); // true
console.log(Person.hasOwnProperty('constructor')); // false
- 删除对象中一个属性
var Person = {
name : 'wenzhe',
number : 91
};
delete Person.name;
console.log('name' in Person) // false
- 列举对象中的属性和值
var Person = {
name : 'wenzhe',
number : '00'
};
for (pro in Person) {
console.log(pro + ' : ' + Person[pro]);
}
// name : wenzhe
// number : 00
// 此方法可以枚举自己和原型链中的内容
// 还可以使用对象的keys方法,它返回一个数组,里面的内容就是由所有
// 的对象的key值构成的数组, 但是不会包含原型链中的内容
var properties = Object.keys(Person);
var i = 0, len = properties.length;
for (var i = 0, len = properties.length; i < len; i++) {
console.log(properties[i] + ' : ' + Person[properties[i]]);
}
-
枚举
如果某个属性的的设定为不可枚举的,那么上面那两种方法都不能显示出那个属性,但是对于keys返回的那个数组,仍然包含不可被枚举的那个值// properties是数组,每个数组都有自己的length属性 console.log('length' in properties) // true; console.log(Person.propertyIsEnumerable('length')); // false
-
Get & Set(accessor properties)
var Person2 = { name : 'wenze'; get name() { console.log('Reading name'); return this.name; } set name(value) { console.log('Setting name'); this.name = value; } } Person2.name = "Chen";
-
在对象外面为对象添加属性的方法
-
在对象外面添加一般的属性(Data Property)--Object.defineProperty
var person = {}; Object.defineProperty(person, "name", { value : 'wz', // 该属性的值 enumerable : true, // 是否可以被枚举 configurable : true, //name可以由Data pro <-> accessor property writable : false // 不能在被更改,同类型也不行 })
-
在对象外面添加 get&set
var person1 = {name : 1}; Object.defineProperty(person1, "name", { get: function() { console.log("Reading name"); return this._name; }, set: function(value) { console.log("Setting name to %s", value); this._name = value; }, enumerable: true, configurable: true })
-
添加多个属性使用Object.defineProperty
var person1 = {}; Object.defineProperties(person1, { _name: { value: "Nicholas", enumerable: true, configurable: true, writable: true }, name: { get: function() { console.log("Reading name"); return this._name; }, set: function(value) { console.log("Setting name to %s", value); this._name = value; }, enumerable: true, configurable: true } });
-
-
查看属性值的设置情况
var person1 = { name: "WZ" }; var descriptor = Object.getOwnPropertyDescriptor(person1, "name"); console.log(descriptor.enumerable); console.log(descriptor.configurable); console.log(descriptor.writable); console.log(descriptor.value); // true // true // true // "WZ"
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。