JavaScript 进阶营

一、JavaScript——this原理,内存的数据结构

2019-08-12  本文已影响3人  陈程城

问题:为什么函数中的this指向调用这个函数的对象?

var obj = {
  a:'obj里的ccc',
  b:function(){
    console.log(this.a)
  }
}

// 1.obj调用b函数
obj.b()
// obj里的ccc

// 2.window 调用b函数
var a = 'window下的ccc'
var c = obj.b  
c()
// window下的ccc

为什么执行的结果会有如此的差异呢

为什么obj.b()obj调用了函数

为什么c()window调用了函数

为什么函数内的this,指向调用这个函数的对象(环境)呢

解释:

var a = {haha:'hehe'}
var obj = {
  a: function(){}
}

所以 问题中的obj.ac存放的是同一个函数在内存中的地址----a、c变量中存的都只是地址

所以 obj.a()c() 是同一个函数,在不同环境中执行

那么this就指向不同的环境

总结:

所以才有,那么那么多的,函数中的this,是指向调用该函数的环境(对象),这样一些类似的概念


GitHub

《web_knowledge_hierarchy》

参考文章

阮一峰——《JavaScript 的 this 原理》

上一篇 下一篇

猜你喜欢

热点阅读