在看一些第三方插件时,都涉及到this 对象,对于js的this对象还没有一个全面的认识,感觉不同于java的js,所以特意梳理简单学习了一会。this是js的一个关键字,随着
函数使用场合不同,this的值会发生变化。但是总有一个原则,那就是this指的是调用函数的那个对象。在js中我们可以自定义一个function函数,而该函数既可以单独的调用,
也可以作为构造函数来调用,甚至可以作为对象的一个方法来调用,此时在调用函数的过程中,this指向是不同的。
this指向:
- 当前new的对象
如果函数被当做构造方法,或者对象的某个方法来调用,此时this指向当前函数所属的对象。
- window对象
如果自定义的函数被直接来调用,此时函数体中的this指向window对象
js 作用域
每种语言都有自己的作用域,也就是变量或者函数的生命周期,熟悉java开发的都知道,java中变量的作用域是以一对'{}' 进行定义的,在花括号内可以我们定义的
变量,花括号外访问我们定义的变量,就会报错,当然同名变量,花括号内的优先级别高。那js的作用域又是如何呢?
在js中,我们定义的变量与其他编程语言不一样,是以函数块为为作用域的,也就是说在函数体内,无论我们的变量在何处定义,我们在函数体内都可以对其进行
访问。
js 作用域链
某个对象中查找到某个属性,那么立即返回,如果window对象中都没有查找到,那最后返回underfined.如此的查找过程便构成了js的作用域链在js中,当查询某个对象的属性时,会按照一定的规则来进行查找,先从当前对象查找,然后再当前对象的上级对象,以此类推,最后知道window对象,如果在
js 原型