js对象的定义
在javaScript 中,对象是一组无序的相关属性和方法的集合,万物皆对象。
对象由属性和方法构成
- 属性:事物的特征,在对象中用属性来表示(颜色尺寸)
- 方法 :事物的行为,在对象中用方法表示 (打游戏)
为什么需要对象
保存一个值的时候,可以使用变量,保存多个值时,可以使用数组,那么需要保存一个完整信息时改怎么保存呢,这时就需要用对象来保存
对象结构
创建对象的三种方法:
直接花括号创建
var obj = {}
New关键词创建
var obj = new Object
通过Object.create 直接创建 ,指定原型
var obj = Object.create ({x:1})
对象属性
对象属性方法权限
属性的特性
- 值 value
- 可写性 writable
- 可枚举性 Enumerable
- 可配置性 configurable
设置特征
Object.defineProperty() //第一个值时obj 第二个attr,第三个值属性描述
获取对象的描述
Object.getOwnPropertyDescriptor(obj,attr)
Object.getOwnPropertyDescriptor({pro:true},'pro)
对象的读写
使用(.)或([])获取属性的值 obj.y obj.['y']
使用等号对象的属性赋值时,就是写操作
对象可以作为关联数组访问。所以才会有 方括号([])表达符。
var addr = "";
for(i =0 ; i <4 ; i++){
addr += cusomer['address' + i]
}
原型和原型链
prototype是函数才有的属性
proto是每个对象都有的属性,但是proto不是一个规范属性,只是部分浏览器实现此属性,对应标准属性是[[Prototype]]
特性
在js中所有对象都是可扩展的
方法名 | 描述 | 详细 |
---|---|---|
isExtensible | 判断是否扩展 | 关闭后不能给对象新增属性(Object.isExtendible(obj)) |
perventExtenions | 关闭可扩展 | Object.preventExtenions(obj) |
seal | 密封性 | Object.seal(obj) |
isSealed | 判断密封性 | Object.isSealed(obj) |
freeze | 冻结性,除可访问外,其他性都关闭 | Object.freeze(obj) |
isFrozen | 判断冻结 | Object.isFrozen(obj) |