- 浏览: 421729 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (318)
- js (20)
- JQuery (2)
- Java (46)
- Oracle (4)
- mysql (21)
- ExtJs (17)
- Excel (2)
- Linux (8)
- Sql (8)
- Jsp (2)
- hibernate (12)
- jbpm (17)
- eclipse (8)
- 名博收藏 (1)
- Junit (2)
- 应用集成 (3)
- web (10)
- jboss (3)
- Rest (3)
- 其它 (7)
- 磁盘分区管理 (1)
- spring (18)
- SSO (4)
- tomcat (4)
- CSS (7)
- MemCached (6)
- EhCache (4)
- weblogic (1)
- apache (6)
- Exception design (1)
- db (1)
- 分析模式 (1)
- jstl (1)
- jsf (0)
- firefox (2)
- MongoDB (4)
- androidpn (1)
- hadoop (1)
- cvs (1)
- 微信公众号 (2)
- 高并发 (4)
- 技术论坛 (1)
- CDN (1)
- JVM (16)
- 加密 (4)
- maven (2)
- jenkins (1)
- hessian (1)
- 大数据处理 (2)
- NIO (0)
- netty (1)
- redis (1)
- git (1)
- Elastic Job (0)
最新评论
-
zgw06629:
或者<pre>aaaabbbbcccc</p ...
javaDoc注释换行 -
ddnzero:
...
StringBuffer换行 -
maosijun:
。。。。
EXT CExt.form.ComboBox选择一次后只剩一个选项 -
ysa198584:
你这有问题,当我的代码出现User.class的时候,反编绎的 ...
java的class文件批量反编译 -
dongj0325:
看到您的博客,很受启发,但还有关于jbpm4.4 timer使 ...
JBPM定时器(Timer)之Repeat属性不能使用变量
JavaScript中有一个call和apply方法,其作用基本相同,但也有略微的区别。
先来看看JS手册中对call的解释:
call 方法 调用一个对象的一个方法,以另一个对象替换当前对象。 call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 参数 thisObj 可选项。将被用作当前对象的对象。 arg1, arg2, , argN 可选项。将被传递方法参数序列。 说明 call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。 如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。
说明白一点其实就是更改对象的内部指针,即改变对象的this指向的内容。这在面向对象的js编程过程中有时是很有用的。
引用网上一个代码段,运行后自然就明白其道理。
<input type="text" id="myText" value="input text"> <script> function Obj(){this.value="对象!";} var value="global 变量"; function Fun1(){alert(this.value);} window.Fun1(); //global 变量 Fun1.call(window); //global 变量 Fun1.call(document.getElementById('myText')); //input text Fun1.call(new Obj()); //对象! </script>
call函数和apply方法的第一个参数都是要传入给当前对象的对象,及函数内部的this。后面的参数都是传递给当前对象的参数。
运行如下代码:
<script> var func=new function(){this.a="func"} var myfunc=function(x){ var a="myfunc"; alert(this.a); alert(x); } myfunc.call(func,"var"); </script>
可见分别弹出了func和var。到这里就对call的每个参数的意义有所了解了。
对于apply和call两者在作用上是相同的,但两者在参数上有区别的。
对于第一个参数意义都一样,但对第二个参数:
apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始)。
如 func.call(func1,var1,var2,var3)对应的apply写法为:func.apply(func1,[var1,var2,var3])
同时使用apply的好处是可以直接将当前函数的arguments对象作为apply的第二个参数传入
发表评论
-
Javascript继承机制的设计思想
2012-04-25 15:52 738转自: http://blog.csdn.net/ben_g ... -
js闭包几种写法
2012-04-18 14:07 875访问:http://wwww.iteye.com/blog/5 ... -
js arguments对象
2012-04-13 10:12 615在javascript中,不需要明确指出参数名,就能访问它们。 ... -
js call
2012-04-12 14:36 604call 方法 请参阅 应用于 ... -
JS原型及原型实现的继承
2012-04-12 11:04 799JS原型及原型实现的继承 时间:2010-06-09 09 ... -
这段js脚本最后面的一对圆括号是什么意思?-----匿名函数
2012-04-11 14:51 1149例(function(){ if(typeof Drag ... -
js闭包
2012-04-05 10:29 717一、什么是闭包? “官 ... -
getBoundingClientRect() 来获取页面元素的位置
2011-06-29 07:40 771http://www.cnblogs.com/qieqing/ ... -
关于JS中的双感叹号
2011-06-14 07:50 1322!!variant will return boolean t ... -
js中2个等号与3个等号的区别
2011-05-08 10:39 1055首先,== equality 等同,= ... -
js call
2011-05-08 08:28 795http://www.cnblogs.com/sweting/ ... -
在滚动div上的div不随滚动条滚动
2010-12-01 17:21 1236在滚动div上的div不随滚动条滚动原因是浮动层样式 z-in ... -
js中的call()与apply()方法
2009-12-30 10:48 955原文:http://canfly2010.itey ... -
解析JS的prototype继承机制
2009-12-30 10:26 1093许多人一直对JS的prototype继承机制不明了,到底在创建 ... -
js正则表达式使用
2009-08-20 15:10 760一,概述 1,正则表达式,可以说是任何一种编程语言都提供的机 ... -
Javascript Closures(javascript闭包概念)
2009-08-03 18:29 823原文:http://hi.baidu.com/ci ... -
5-18 CSS3伪类选择器:nth-child()
2009-08-03 11:30 1017原文:http://hi.baidu.com/%C ... -
KeyDown,KeyPress 和KeyUp
2009-07-30 13:18 2205最近在做一个程序,需要实现窗口下的F5 刷新功能。 研究了一 ... -
浅谈js中的Insertion对象
2009-07-30 10:40 802首先,这个对象是其他类似功能的根。它没有任何属性和方法。在这个 ...
相关推荐
### JavaScript中的apply与call用法详解 #### 一、引言 在JavaScript中,`apply`与`call`是两个非常重要的函数,它们都属于`Function.prototype`的一部分,因此每一个函数对象都拥有这两个方法。这两个方法的主要...
`apply`方法与`call`类似,主要区别在于传递参数的方式。`apply`接受两个参数:第一个参数同样是`this`值,第二个参数是一个数组或类数组对象,其中的元素作为函数的参数: ```javascript func.apply(thisArg, ...
`apply`方法与`call`类似,但它是接收一个数组或类数组对象作为参数,而不是逐个列出参数。其语法如下: ```javascript function.apply(thisArg, [argsArray]) ``` `argsArray`是一个数组或类数组对象,其元素会被...
JavaScript中的继承通常通过原型链实现,`call`和`apply`能帮助我们创建子类并继承父类的方法。例如: ```javascript function baseA() { // base Class A code } function childA() { baseA.call(this); // ...
### JavaScript中apply、call和bind的用法区分 在JavaScript编程中,`apply`、`call`和`bind`这三个方法被广泛用于改变函数内部`this`的指向,这对于理解和编写复杂的JavaScript代码至关重要。虽然它们的功能相似,...
在JavaScript中,`call`和`apply`是两个非常重要的函数,它们都允许开发者改变函数执行时的上下文,即`this`的指向。这两个方法主要用于实现函数的绑定和继承,以及处理数组或类数组对象。 首先,我们来看`call`的...
bind()方法与apply和call不同,它不会立即执行函数,而是创建一个新的函数,当这个新函数被调用时,它的this被绑定到bind()方法的第一个参数,即传入的上下文对象。bind()可以传递部分参数给原函数。 ```javascript...
JavaScript中的apply和call方法是函数对象上的两个重要方法,它们都用于显式设置函数体内this的值。虽然这两个方法在功能上非常相似,但它们在使用参数上存在明显的区别。本文将详细介绍apply和call的区别、用法以及...
call, apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以每个Function对象实例,也就是每个方法都有call, apply属性.既然作为方法的属性,那它们的使用就当然是...
在JavaScript中,实现对象继承主要有三种方式:原型链继承(prototype)、构造函数继承和call/apply继承。下面将分别详细介绍这三种继承方式的具体用法和实现原理。 1. 原型链继承(prototype) 原型链继承是...
apply和call,它们的作用都是将函数绑定到另外一个对象上去运行,两者仅在定义参数的方式有所区别: Function.prototype.apply(thisArg,argArray);...下面的代码说明了apply和call方法的工作方式: 代码如下: //定义一
1、call,apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以每个Function对象实例(就是每个方法)都有call,apply属性。既然作为方法的属性,那它们的使用...
在 javascript 中,call 和 apply 都是为了改变某个函数运行时的上下文(context)而存在的,一般来说,this总是指向调用某个方法的对象,但是使用call()和apply()方法时,就会改变this的指向 语法: apply() 接收两...
在ECAMScript3给Function的原型定义了两个方法,它们是Function.prototype.call和Function.prototype.apply。本文详细介绍了apply与call的用法,有需要的可以参考下。
在JavaScript中,`apply`和`call`是两种非常重要的函数调用方式,它们都用于改变函数内部`this`的指向以及动态传递参数。这两者的主要区别在于参数的传递方式。 首先,`this`在JavaScript中是一个关键字,它在不同...
在JavaScript中,`apply()`和`call()`是两种非常重要的函数调用方式,它们都是用于改变函数执行时的上下文,即改变`this`的指向。这两种方法的主要区别在于它们接收参数的方式,但最终目的都是为了让函数能在不同的...
JavaScript中的`call`和`apply`是两种非常关键的方法,它们允许我们改变函数内部`this`的指向,同时也为实现模拟继承提供了可能。虽然JavaScript不直接支持类继承,但通过`call`和`apply`,我们可以实现类似的效果。...
JQuery源码分析与JavaScript中的apply与call方法是JavaScript编程中非常重要的概念,这两者都是函数对象的方法,用于在特定的作用域中执行函数,并可以指定函数体内this的指向。从JQuery源码中分析apply和call方法,...