js中this的用法
2015-12-14 17:26
274 查看
在函数内部有两个特殊对象:arguments和this,this的指向其实是非常灵活的,它会根据调用function的对象不同,导致了this的指向不同。当在全局作用域下调用函数时,this指向window。例如:
我们知道this对象在执行时是基于函数的执行环境绑定的:当函数被作为某个对象的方法调用时,this指向那个对象。但匿名函数的执行环境具 有全局性,所以this指向window。但在闭包中,这一点可能不太明显。先说一下闭包吧,我的理解是在一个函数内部创建另一个函数,而内部函数可以访 问外部函数作用域中的变量,这是因为内部函数的作用域链中包含外部函数的作用域。
看到这里,大家可能会惊讶,为什么this指向的是全局作用域。因为内部函数在搜索this和arguments时,只会搜索到其活动对象,永远不可能直接访问外部函数中的这两个变量。
为了让闭包内的this能访问到外部作用域中的变量,我们可以在定义匿名函数之前把this附一个值,当定义闭包后就可以访问外部变量了。因为它是我们在外部函数(包含函数)中特意声明的一个变量。
this对象的获取取决于上下文;函数什么时候调用才决定了this到底引用的啥。
也可以参考这篇博客: http://www.cnblogs.com/linfangshuhellowored/p/4248540.html
var name = 'the window'; var object = { name: 'My object', getFunc: function (){ return function(){ return this.name; } } }; alert(object.getFunc()()); //'the window'
看到这里,大家可能会惊讶,为什么this指向的是全局作用域。因为内部函数在搜索this和arguments时,只会搜索到其活动对象,永远不可能直接访问外部函数中的这两个变量。
为了让闭包内的this能访问到外部作用域中的变量,我们可以在定义匿名函数之前把this附一个值,当定义闭包后就可以访问外部变量了。因为它是我们在外部函数(包含函数)中特意声明的一个变量。
也可以参考这篇博客: http://www.cnblogs.com/linfangshuhellowored/p/4248540.html
相关文章推荐
- JavaScript_DOM编程艺术第二版学习笔记-第6章
- JS打印——第三方控件打印
- 《avascript 高级程序设计(第三版)》 ---第二章 在HTML中使用Javascript
- 使用IDEA创建Maven项目使用JSTL标签所需要的依赖
- 判断手机终端并自动跳转js代码及使用实例
- js控制tr 隐藏 显示
- JSONArray无极限树形结构菜单(精简版)
- hibernate使用懒加载时,mvc转json时因为session已经关闭报错
- JavaScript在IE浏览器和Firefox浏览器中的差异总结
- js判断页面是什么设备打开的
- Kindeditor 4.1.10 JSP Firefox 报上传错误
- js如何实现一定时间后去执行一个函数
- jsp session 用法
- jsp与jspx文件
- js 异步上传图片 限制图片的格式大小
- 探究JavaScript函数式编程的乐趣
- 《avascript 高级程序设计(第三版)》 ---第一章 Javascript简介
- JSON中使用JArray.Parse
- 简单的 JavaScript 类继承框架
- 使用JSONP进行跨域请求