对象字面量(包围在花括号中的零个或多个名值对);
要求:
属性名用引号括住;
属性值可以为任意变量;
属性名如果是一个合法字符串,则不要求用括号括住属性名;
'use strict'
var peoson = {
name : 'xiaoming',
age : 18,
'first-name':'zhao',//属性名中含有特殊字符
other : {} //属性值为一个空对象字面量
}
检索:
对象[‘属性名’]
对于属性名中不含特殊字符的属性,优先采用 对象.属性名 的方式
检索不存在的属性返回undefined
从undefined属性中检索会返回错误
console.log(peoson.name);//xiaoming
console.log(peoson['first-name']);//zhao
console.log(peoson.shool);//undefine
console.log(peoson.shool||'unkown');//unkown
更新:对象中的值通过赋值来更新
引用:对象通过引用传递
原型:对象字面量的原型为Object.prototype
反射:检查对象并确定对象有什么属性
var peoson2 = Object.create(peoson)
peoson2.school = 'high school';
var name;
console.log('****************peoson1*****************')
for(name in peoson){
console.log(name + ' : ' + typeof peoson[name])
}
console.log('****************peoson2*****************')
for(name in peoson2){
console.log(name + ' : ' + typeof peoson2[name])
}
console.log('****************peoson2自己的属性*****************')
for(name in peoson2){
if(peoson2.hasOwnProperty(name)){
console.log(name + ' : ' + typeof peoson2[name])
}
}
执行结果
****************peoson1*****************
name : string
age : number
first-name : string
other : object
****************peoson2*****************
school : string
name : string
age : number
first-name : string
other : object
****************peoson2自己的属性*****************
school : string
删除属性:
peoson2.age = 21;
console.log('peoson2 的 年龄 :'+ peoson2.age);
delete peoson2.age;//使原型中年龄暴露出来
console.log('peoson2 的 年龄 :'+ peoson2.age);
执行结果:
peoson2 的 年龄 :21
peoson2 的 年龄 :18
减少全局变量的污染:多个文件中名字冲突造成的污染
解决方案:将全局性的资源纳入一个名称空间下