//屬性添加
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
}