JS运行的底层机制-web前端高级学习

JS中对象的属性名

在JS中对象的属性名是什么格式的?
普通对象的属性名只能是“字符串”(普通对象的属性名可以是基本数据类型值)
但是普通对象的属性名不能是对象,如果是对象,需要转换为字符串存储

Map 这种数据结构支持 对象作为属性名

对象作为属性名会toString转换为字符串"[Object Object ]"
普通对象toString 是调取 Object.prototype.toString 是用来检测数据类型的

js运行的底层机制

JS中存在多种作用域(全局、函数私有的、块级私有的)
代码执行之前,首先会形成自己的执行上下文,然后把上下文进栈,进栈后,在当前上下文中在去依次执行代码

  • 只有页面关闭,全局上下文EC(G)才会出栈
  • 每一个执行上下文中一定存在一个空间,用来存储创建的变量的 => 变量对象VO(G)

=号赋值操作

1、创建值--------------基本类型值直接存储在栈内存中
2、创建变量
3、变量和值指针关联

创建对象步骤:
1、创建一个堆内存
2、把键值对存储到堆内存
3、堆内存地址放到栈中,供变量调用
在这里插入图片描述1
创建对象步骤:
1、创建一个堆内存
2、把键值对存储到堆内存
3、堆内存地址放到栈中,供变量调用
在这里插入图片描述
在这里插入图片描述

var a={n:1};
var b=a;
a.x=a={n:2};//执行顺序 a.x=值   a=值
console.log(a.x);//undefined
console.log(b)//{n:1,x:{n:2}}

function fn() 创建一个变量叫fn 存储的值是一个函数
var fn = function(){}; 和这个类似

函数堆

  1. 把函数体中的代码当做字符串存储到堆中 “代码字符串” =>创建函数不执行,函数没啥用
  2. 函数也是对象,他也有自己的键值对

fn(x)执行传递的值是实参 定义函数设置的是形参
函数执行的目的? 想让之前存储在堆中的代码字符串执行 -> 代码执行就要有自己的执行环境


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

在这里插入图片描述

var x=[12,23]
function fn(y){
	y[0]=100;
	y=[100];
	y[1]=200;
	console.log(y);
}
fn(x)
console.log(x)

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值