作用域以及类、实例
栈内存 js执行的环境 (作用域)
堆内存 存放代码的空间 存放方式 键值对的形式存 字符串的形式存
作用域的形成:
浏览器天生有一个全局叫window
函数执行的时候会形成一个私有的
作用域链:
js执行代码之前,浏览器会给他一个全局作用域叫window,在window下会分两个模块 一个内存模块,一个执行模块。 内存模块 会找到所有关键字 var 和function ,并分配给他们一个内存地址;执行模块 浏览器从上到下执行 遇到变量会去内存地址查找这个变量是否存在,如果不存在就是xxx is not defined ,如果存在就看有没有赋值,赋值了就直接操作,没有就去他的上一级的内存模块查找,直到window为止。没有赋值就是undefined。这种查找机制叫作用域链。
注:如果普通变量和函数变量名相同,最后保留函数变量
=赋值运算
赋值运算 就是把后面的数据类型赋值给等号前面的变量。
数据类型分两种情况
1、基本数据类型 (number boolean string null undefined)直接将数据赋值给前面的变量
2、引用(复合)数据类型 (object array function)将内存地址赋值给前面的变量
object和json的区别
1、长得一样 ,都是以键值对的形式书写,object的key值可以不加引号,但是json必须加
2、object是前段的数据类型 json 是数据库存放的数据格式
类和实例的关系
1、每个类都有一个prototype的属性,属性是对象,里面有一个constructor的属性,属性值就是类本身
2、每个实例对象都有一个__proto__的属性,属性是对象,它指向当前类的原型
__proto__ 和prototype
二者都是原型 ,前者是查找属性对的,后者是存放属性的 ,前者是给浏览器使用的,后者是给开发者使用