//属性添加
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
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
var globalValue = 90; delete globalValue //false
(function(){ var localValue = 90; return delete localValue; })(); //false
//隐式的建立全局变量是能够删除的
yinshi = 90;
delete yinshi //true
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"]
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
}