对象
基本数据类型
是一种复合值
对象也可以看做是属性的无序集合
还可以从一个称为圆形的对象继承属性
对象的方法通常是继承的属性
原型继承 prototypal inheritance 是核心特性
对象是可变的
三大相关的对象特性
- 对象的原型protopype 指向另外一个对象,对象的属性继承自它的原型对象
- 对象的类 是一个标识对象类型的字符串
- 对象的扩展标记,指明了在ecma 5 是否可以向该对象添加新属性
内置对象
native object 是由ECMAScript 规范定义的对象或类 例如数组、函数都是内置对象
宿主对象
所嵌入的环境定义的,htmlElement对象是宿主对象,
js的宿主就是浏览器,浏览器的对象。就是宿主对象
自定义对象
自由属性
own property
继承属性
inherited property
创建对象的三种方法
一、
var nullObject ={} //空对象
二、
var d = new Date(); //
new后面跟一个函数调用
这里的函数称作构造函数constructor
构造函数用以初始化一个新创建的对象。
JavaScript核心中的原始类型都包含内置构造函数
原型
每个JavaScript对象(null)除外,都和另一个对象相关联
另一个对象就是原型
每个对象都从原型继承属性
所有通过对对象直接量创建的对象都具有同一个原型对象
可以通过Object.prototype获得对原型对象的引用
new 和 构造函数调用 创建对象的原型就是构造函数的prototype属性的值
Object.prototype不继承任何属性
其他原型对象都是普通对象
普通对象都具有原型
所有的内置构造函数都具有一个继承Object的原型
Date 继承Object和Date 这一系列链接的原型对象就是所谓的原型链 prototype chain
三、
Object.create()方法
创建一个新对象,第一个参数是这个对象的原型
对象的三个属性
- 原型prototype
- 类class 是一个字符串,表示对象的类型信息,toString方法可以查询
- 可扩展性extensible attribute 表示是否可以给对象添加新属性,所有内置对象和自定义对象都是显式可扩展的
序列化对象
将对象的状态转换为字符串
JSON.stringfy()
JSON.parse()
JSON JavaScript Object Notation
对象方法
toString()返回一个表示调用这个方法的对象的字符串
valueOf() 将对象转换为某种原始值而非字符串的时候才会调用它