js (this,call,apply)
来源:互联网 发布:淘宝精品推荐女鞋 编辑:程序博客网 时间:2024/05/01 04:07
对于我这种初学者来说this指的到底是哪里,实在头疼,再有了前面关于变量和作用域的概念后,今天我觉定学习关于this的用法,把这个烦人的家伙解决掉!
转载于: http://blog.sina.com.cn/s/blog_68cb8c790100ytl5.html
(一)关于this首先关于this我想说一句话,这句话记住了this的用法你也就差不多都能明白了:this指的是当前函数的对象。这句话可能比较绕,我会举出很多例子和这句话呼应的!(看下文)
1.首先看下面这段代码, 定义一个函数,弹下this,
function doSomething(){
alert(this);
}
doSomething();
}
doSomething();
我是在firefox里面调试的,所以返回的结果是[Object Window]。
那么这个 [Object Window], 到底是什么呢?看看下面的代码
function doSomething(){
alert(this===window);
}
doSomething();
看到弹出了true, 也就是说在这种正常情况下,this其实就是window
所以,我们定义了一个全局的变量的时候,可以
var test="Tony";
也可以
window["test"]="Tony";
下面这个例子,进一步说明,正常情况下,函数里的this就是window
var test="Tony";
function doSomething(){
alert(this.test); //弹出 "Tony";
alert(window.test); //弹出 "Tony";
}
doSomething();
第一次呼应:通过以上几个例子,我想可以说这几个例子中得this指的就是他当前函数doSomething()的Window对象。那顾名思义this.test自然就等于window.test了。事实也是如此。那么这个 [Object Window], 到底是什么呢?看看下面的代码
function doSomething(){
}
doSomething();
看到弹出了true, 也就是说在这种正常情况下,this其实就是window
所以,我们定义了一个全局的变量的时候,可以
var test="Tony";
也可以
window["test"]="Tony";
下面这个例子,进一步说明,正常情况下,函数里的this就是window
var test="Tony";
function doSomething(){
}
doSomething();
2.我再举一个闭包的例子,但是在这里我不会解释什么是闭包,只是讲this的用法,明天我会学习闭包,今天就先当他是一个未知数,来学习this的一个工具。
第二次呼应:现在再看代码红色部分做的修改,this是不是指的是当前doSomething()函数的object对象了?那再输出结果自然就是"My Object"了。
(二)关于call
还是以doSomething函数为例:
本来doSomething函数里的this表示的是 window ,我们执行下面这句。
这个时候doSomething里的this就变成了"某个对象",看下面的例子:
上面代码,我们可以看出,相比普通调用, call 只是多了一个用来指定this的参数,call 干什么用的?就是干这个用的!!现在有体会了吧?
(三)关于apply
都知道call的用法了,apply其实是一个意思。只不过是调用参数的形式不一样罢了。
call是一个一个调用参数,而apply是调用一个数组。还是用上面相同的例子:
上面这写代码写红色部分就是apply的用法,怎么样?简单吧?
明天我将会写关于call,callee,和caller的用法
- js (this,call,apply)
- js (this,call,apply)
- JS中的this、apply、call
- js 模拟call, apply的this替换
- js之this,call,apply用法
- js call() apply() bind() -改变this指向
- this call apply
- this call() apply()理解
- Javascript apply, call this
- this、call和apply
- this、call和apply
- this,call,apply
- this、call和apply
- this call apply
- JS 的this、new、apply和call详解
- 浅谈js中的call,apply,bind方法中的this指针
- JS中this、new、apply和call详解
- JS的this总结(上)-call()和apply()
- 排序
- jquery实现网站导航动画滑动效果
- Map的使用
- TLS中检测断点反调试
- 数据库日期比对的效率提升
- js (this,call,apply)
- iOS开发——keychain的使用
- ajax请求问题。
- 在Linux下安装多个版本的gcc
- 苹果开发者账号申请教程
- js 下拉框二级联
- x264-snapshot-20121119-2245 arm-linux移植问题
- Oracle 存储过程 分解字符串
- [转]VS2008找不到MFC90d.dll、msvcrt.dll错误