读阮一峰的this原理

为什么同一个函数运行时,结果不一样?
obj.foo()在obj环境执行,
foo() 在全局环境中执行
解释原理, 理解this作用

二、 内存的数据结构 《=》 地址
{a:1, b:2} => HashMap
JavaScript语言之所以, , 跟内存里面的数据有关系
跟传统语言的this不一样 面向对象中

var obj = {foo: 5};

右边先执行 生成一个对象,存储在内存中, 地址给obj
引用是通过地址发生的
obj.foo过程
引擎chrome v8 先从obj 拿到 内存地址, 从该地址取出拿始的对象,
返回foo属性
三、 函数
属性的值 可能是一个函数
再往 下指了
引擎chrome v8 给函数单独分配内存,
将地址给foo属性

函数是一个单独的值, 它可以在不同的
环境(上下文)执行。
需要一个this来决定 当前的上下文

四、环境变量
为什么要有上下文 环境?
JS在函数体内部, 引用当前环境的其他变量

var f = function () {
 var x = 1;
  console.log(x);
};

var obj = {
	x: 1,
	f: function() {
		console.log(this.x);
		this 指定上下文 环境 
	}
}

函数是一个吃着碗里的, 看着锅里的家伙,
如果要去访问到其它的环境里的变量时,
可以通过this来表示 当前的上下文环境

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值