作用域
栈内存:js执行的环境(作用域)
堆内存:存放代码的空间,存放方式(键值对的形式存,以字符串的形式存)
js代码在执行之间浏览器会给他一个全局作用域,叫window,每个作用域下分俩个模块,一个是内存模块,一个是执行模块,内存模块会给所有的变量一个内存地址,变量的声明在js中靠关键字var和function。
2.什么时候会有作用域的形式?
浏览器天生有一个全局叫window
函数执行的时候形成一个私有的
js在执行前,浏览器会给他一个全局作用域叫window,在window下分俩个模块,一个是内存,一个是执行,内存会找到所有的关键字var 和function 对变量进行提前声明(这个功能叫变量提升)给每个变量分配一个内存地址,在执行模块遇到变量,首先会在自己的作用域下通过内存地址去查找这个变量是否存在如果有就直接操作 没有就向他的上一级作用域查找,有就操作,没有就继续向上查找直到window这种查找机制称为作用域链
变量命名冲突
如果普通变量和函数变量相同最后保留函数变量
3.=赋值运算
1.赋值运算就是把后面的数据赋值给等号前面的变量
后面的数据分俩种:1后面是简单的基本数据类型:number;string;Boolean;undefined;直接赋值给前面的变量
2:如果后面的是复合数据类型:array;object;function;将内存地址赋给前面的变量
4.object和json二者
1·长得一样,都以键值对形式书写。object的key可以不加引号,json的key必须加引号
2.object是前端的数据类型,json是数据库存放的数据格式
5.object对象
1.对象的定义
自变量定义 var object={name:“张三”}
类的实例: var obj=new object()obj.name=“张三”
类的本质是function
1.每个类都有一个prototype属性,这个属性是一个对象,里面有constructor的属性,属性值就是本身。
2.每个实例对象都有一个__proto__属性,这个属性是一个对象,这个属性指向当前类的原型、
3.prototype和__proto__
二者都叫原型,前者是存放数据的对象,后者是查找属性,前者给开发者使用,后者给浏览器使用