+ 浏览器 -> webkit内核(V8)、Trident、Gecko、Blink...
+ Node -> webkit内核
+ webview「Hybrid混合APP开发」 -> webkit内核
+ ...
ECStack(Execute Context Stack)
执行环境栈「栈内存」
+ 作用1:供代码执行
+ 作用2:存储原始值和变量
EC(G) (Execute Context Global)
全局执行上下文
+ 目的:区分代码执行的环境
+ 全局代码都会在全局上下文中执行
VO(G) (Variable Object)
变量对象(全局执行上下文中的变量对象)
+ 存储当前上下文中的声明的变量
GO(Global Object)
全局对象(存储浏览器内置的API)
内存分为:栈内存Stack 堆内存Heap
+ 内存条中分配出来的运行内存
+ 前端性能优化:内存优化
1. 创建一个值(原始值 & 对象)
+ 原始值:在栈内存中找个位置存储起来
+ 对象:单独开辟一个堆内存空间,用来存储对象中的成员信息
2. 声明变量 Declare,把声明的变量存储到当前上下文的”变量对象中VO/AO“(var/function/let/const/import)
3. 让变量和创建的值关联起来
1. 开辟一个堆内存空间「在堆内存中开辟一块单独的空间」 -> 会提供一个公访问的地址「16进制」
2. 把对象中的键值对一次存储到空间中
3. 把空间地址放到栈中存储,以此来供变量引用
var a = 12
var b = a
b = 13
console.log(a)

var a = {
n: 12
};
var b = a;
b['n'] = 13;
console.log(a.n);

var a = {
n: 1
};
var b = a;
a.x = a = {
n: 2
};
console.log(a.x);
console.log(b);
