JavaScript的简单类型包括数字、字符串、布尔值(true和false)、null值和undefined值
3.1 对象字面量
一个对象字面量就是包围在一对花括号中的零或多个“键值对”
属性名可以是包括空字符串在内的任何字符串
属性名是一个合法的JavaScript标识符且不是保留字,并不强制要求用引号括住属性名
对象是可嵌套的
3.2 检索
||运算符可以用来填充默认值
var middle = stooge["middle-name"] || "(none)";
var status = flight.status || "unknown";
尝试检索一个undefined值将会导致TypeError异常。这可以通过&&运算符来避免错误
flight.equipment //undefined
flight.equipment.model //throw "TypeError"
flight.equipment && flight.equipment.model //undefined
3.3 更新
对象中的值可以通过赋值语句来更新。如果属性名已经存在与对象中,那么这个属性将被替换。
如果对象之前并没有拥有那个属性名,那么该属性就被扩充到该对象中
3.5 原型
每个对象都链接到一个原型对象,并且它可以从中继承属性。所有通过对象字面量创建的对象都链接到Object.prototype这个JavaScript中标准的对象
当我们对某个对象做出改变时,不会触及到该对象的原型。
但原型关系是一种动态的关系。如果我们添加一个新的属性到原型中,该属性会立即对所有基于该原型创建的对象可见
3.6 反射
用typeof和hasOwnProperty过滤不想要的值
3.7 枚举
for in 语句可用来遍历一个对象中的所有属性名。该枚举过程将会列出所有的属性——包括函数和原型中的属性。
枚举中属性名出现的顺序是不确定的,如果要让属性名以特定的顺序出现,最好的办法就是完全避免使用for in语句
3.8 删除
delete运算符可以用来删除对象的属性。它将会移除对象中确定包含的属性。它不会触及原型链中的任何对象
3.9 减少全局变量污染
全局变量削弱了程序的灵活性,应该避免
最小化使用全局变量的一个方法是在你的应用中只创建唯一一个全局变量
var MYAPP = {};