仅做笔记分享,如有错误请高手指出
1.JavaScript的结构
JS的核心是对象,每个对象都可以包含0个或多个由名值对组城的属性
对象的属性有两种类型:
-
基础类型(直接量)
不能再包含属性 -
对象类型
可以再包含自己的属性,如果如此,该对象即是一个对象,又是另一个对象的属性。
JS中对象可以分为function和object两种类型。
JS中的object类型对象是使用function类型对象所创建。JS中经常使用的String、Array和Date等对象其实为function类型对象,包括Object对象也是function类型的对象,而使用它们创建出来的对象就是object类型
chrome测试截图
JS中用来创建object类型对象的各种function对象之间没有继承关系,但创建出来的object类型的对象可以继承其他对象的属性。另外,由于一个对象可以作为另一个对象的属性存在,因此对象之间另外还有一层包含关系。
JS本质就是一个大的对象,该对象为Global Object,是由宿主环境(如浏览器)创建出来的,在浏览器中就是window对象,其他对象都是它的属性,或者属性的属性。
2.JavaScript的内存模型
- 直接量
直接用两块内存分别保存属性名与属性值
- 对象
对象需要三块内存,分别保存属性名、属性地址、属性内容
对于对象类型的属性来说,属性明知是指向了保存对象的内存地址,而不是指向实际的对象
function F(){
this.v=1
}
let f=new F()
let f1=f
console.log(f1.v) //1
f1.v=2
console.log(f.v) //2
f=null
console.log(f1.v) //2