javascript 作用域链认识
来源:互联网 发布:电脑程序编程 编辑:程序博客网 时间:2024/06/03 16:36
作用域链作用:保证执行环境里有权访问的变量和函数时有序的,作用域链的变量只能向上一级一级的访问,访问到window对象即被终止,作用域链向下访问变量是不被允许的。
(1):当页面加载的时候首先加载js,既script标签下的js代码,会按顺序执行,而这些能被执行的代码都是属于window的变量或函数;(script下定义的对象或函数(由function定义的)是不被执行的)
可知js中运行环境有两类:
一类是全局执行环境,即window代表的全局环境
一类是函数代表的函数执行环境,即局部作用域
(2)什么是作用域链?
js中有一个概念,执行环境栈 execution context stack,当一个函数的执行环境压入到执行环境栈里,这个时候就会在上下文变量里构造一个对象,这个对象就是作用域链scope chain;同时还会构造一个this对象,this对象也是属于上下文变量,而this变量的值就是当前执行环境外部上下文变量的一个拷贝,这个拷贝没有作用域变量.如:
其中qk1和qk2里的this里指针都是指向window,这是为什么呢?哈哈!
因为在js里我们定义函数方式是通过function 形式定义的,而这个函数不管指针定义在哪里,它都属于全局对象window
但我们知道很多this指针不是指向window的,如:
会发现this指针指向对象Object了,为什么呢?看下另一种写法
这两种写法是等价的,第一种对象定义叫做字面变量定义,第二种是标准写法,Object对象的本质也是一个function,所以当调用对象里函数时,函数的外部执行环境就是qk本身。
这得说到另一个知识,即js里通过new、apply、call改变函数的this指针,函数this指针都是指向window的
- javascript 作用域链认识
- 认识javascript中的作用域和上下文
- 认识JavaScript中的作用域和上下文
- 认识JavaScript中的作用域和上下文
- 认识javascript中的作用域和上下文
- javascript 作用域链
- Javascript作用域链
- javascript 作用域链
- Javascript作用域链
- JavaScript作用域链
- JavaScript作用域链
- javascript作用域链
- Javascript 作用域链
- JavaScript作用域链
- Javascript作用域链
- Javascript作用域链
- Javascript作用域链
- JavaScript作用域链
- maven 与myeclipse的集成
- 用欧几里得算法求两个正整数的最大公因子
- 简易通讯录
- 用 Tomcat 和 Eclipse 开发 Web 应用程序
- SecureCRT日志和卷屏行数设置
- javascript 作用域链认识
- JQuery validate验证规则
- 7.1 :OutOfMemoryError,Java堆溢出了,这表明程序有严重的问题。我们需要找造成OutOfMemoryError原因。一般有两种情况:
- 解决Ubuntu中QtCreator(3.6.1)不能使用搜狗输入法录入汉字问题
- HDU 5670 Machine
- RSA公钥密码算法的实现
- Cron Expression
- 2016SDAU编程练习二1010
- Activity与Activity调用栈分析