1.做用域前端
栈内存 js执行的环境 (做用域)数据库
堆内存 存放代码的空间 存放方式 键值对的形式存 字符串的形式存json
Js代码在执行以前,浏览器会给他一个全局做用域叫window,每一个做用域下分连个模块,一个是内存模块,一个是执行模块。内存模块会给全部的变量一个内存地址。变量的声明在js中靠关键字var 和function 。浏览器
2.何时会有做用域的造成?函数
浏览器天生有一个全局的叫windowprototype
函数执行的时候会造成一个私有的。对象
Js在执行以前,浏览器会给他一个全局做用域叫window,在window下分两个模块,一个是内存,一个是执行,内存会找到全部的关键字var和function 对变量进行提早声明(这个功能叫变量提高)给每一个变量分配一个内存地址。在执行模块遇到变量首先会在本身的做用域下经过内存地址去查找这个变量是否存在,若是有就直接操做,没有就向他的上一级做用域的内存模块查找,若是有就操做,没有就继续向上查找,直到window。这种查找机制叫做用域链。内存
变量命名冲突作用域
若是普通变量和函数变量命名相同,最后保留函数变量。开发
3.= 赋值运算
1.赋值运算,就是把后面的数据赋值给等号前面的变量。
后面的数据分两种状况
4.object和json两者
1.长的同样,都以键值对的形式书写,object的key能够不加引号,可是json必须加
2.object是前端的数据类型,json是数据库存放的数据格式。
5.object 对象
1.对象的定义
字面量定义 var obj={name:”张三”}
类的实例 var obj=new Object() obj.name=”张三”;
类的阶梯
类的本质是function
类和实例的关系
1.每一个类(函数)都有一个prototype的属性,这个属性是一个对象,里面有一个constructor的属性,属性值就是这个类自己。
2.每一个实例(对象)都有一个__proto__的属性,这个属性也是一个对象,它指向当前类的原型。
3.prototype和__proto__
两者都叫原型,前者是存放属性的对象,后者是查找属性的,前者给开发者使用,后者给浏览器使用。