javascript的简单数据类型包括数字、字符串、布尔值、null和undefined。其他的所有值都是对象。
- 对象是属性的容器,每个属性都有相应的键值。属性的名字可以是包括空字符串在内的任意字符串,属性值可以是除undefined值之外的任何值。
- javascript里的对象是无类型的。它对新属性的名字和属性的值没有限制。对象可以包含其他对象,所以它们很容易的可以表示成树状或图形结构。
- javascript包含一种原型链的特性,允许对象继承另外一个对象的属性。
对象字面量
对象的字面量就是包裹在花括号里的零个或者多个键值对。如果属性名是个合法的标识符且不是保留字,则不需要强制使用引号。
var empty_object = {}
var stooge = {
"first-name": "Jerome",
"last-name": "Howard",
age: 24
};
检索
stooge["first-name"] // Jerome
stooge.age // 24
两种检索方式
- 使用[]
- 如果键是和合法的js标识符那么可以使用 .
stooge["first-name"] || 'none'
stooge && stooge["first-name"]
可以用以上两种方式设置默认值或者防止对象不存在而抛错。
更新
stooge["first-name"] = 'JACK'
如果改属性存在那么会更新,否者会扩充该属性到对象中。
引用
对象是通过引用来传递的,所以它们永远不会被复制。
原型
- 每个对象都有一个原型对象,并且可以从中继承属性。所有通过对象字面量创建的对象都链接到Object.prototype。
创建一个用原对象作为其原型对象的新对象
if (typeof Object.beget !== 'function') {
Object.create = function (o) {
var F = function () {};
F.prototype = o;
return new F();
}
}
- 在我们更新对象的时候,原型链不会发生变化。
- 原型链只有在检索值得时候才会被用到。如果在该对象检索不到这个值 ,那么就会到原型对象中去获取。
反射
typeof 检查对象类型
hasOwnProperty 查看对象是否拥有读友的属性。
枚举
for in 遍历对象所有的属性名
删除
delete stooge.age
delete 可以删除对象的属性