- 浏览: 421717 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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属性不能使用变量
原文:http://canfly2010.iteye.com/blog/403626
Javascript 中的function本身也是一个object,它本身就会有tostring(),call(),apply()几个附加方法。这个 function.call的意义就在于,当调用时它时,运行时会把它的第一个参数替换掉function的this指向。
call()和apply()是Function object 的两个方法, 它们也可以使一个function作为另一个对象的method来调用用. call()和apply()都需要参数, 而第一个参数就是调用对象, 也就是当function内部出现this时, this所指的对象. call()和apply()的区别在于call()可以传递任意长度参数, 只要第一个参数时调用对象. 而apply只接受两个参数, 需要将除调用对象外的所有参数放入一个数组中。例如:
//定义Book类 function Book(name, author, page) { this.name = name; this.author = author; this.page = page; this.getReader = Book_getReader; } //定义Book类获取读者的方法 function Book_getReader() { //.... } function getBooksWithSameAuthor(form, to) { var name = this.author; var books = ... //get books written by name and from year "from" to year "to" return books; } var abook = new Book("JavaScript is Cool", "tom", 514); var books = getBooksWithSameAuthor.call(abook, 1990, 2005); 或 var books = getBooksWithSameAuthor.apply(abook, [1990, 2005]);
当一个function不作为一个对象的method时, JavaScript会认为它是属于一个Globle Object对象的method, 这个Globle Object在Browser中就是window类. 所以从这个角度来说, function和method又可以统一起来了.
Function object 还有一个非常重要的property: prototype. 它是一个predefined的prototype object. 当一个Function用作对象的constructor时, protptype property将发挥作用,中文翻译叫原型. JavaScript的新对象就是通过function的原型来建立的. 同时我们还可以利用prototype来动态的向对象中添加属性, 如:
function Book (name, author, page) { this.name = name; this.author = author; this.page = page; } var abook = new Book("JavaScript is Cool", "tom", 514); Book.prototype.getInfo = getInfo; function getInfo() { return this.name + " written by " + this.author + " with " + this.page + " pages"; } alert(abook.getInfo());
这里有一个例子, 用prototype方法来实现callback:
Function.prototype.andThen=function(g) { var f=this; return function() { f();g(); } }; function Manager() { this.callback=function () {}; // do nothing this.registerCallback=function(callbackFunction) { this.callback=(this.callback).andThen(callbackFunction); } } var manager=new Manager(); manager.registerCallback(sayHi); manager.registerCallback(sayBye); manager.callback();
发表评论
-
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 614在javascript中,不需要明确指出参数名,就能访问它们。 ... -
js call
2012-04-12 14:36 603call 方法 请参阅 应用于 ... -
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 716一、什么是闭包? “官 ... -
getBoundingClientRect() 来获取页面元素的位置
2011-06-29 07:40 771http://www.cnblogs.com/qieqing/ ... -
关于JS中的双感叹号
2011-06-14 07:50 1322!!variant will return boolean t ... -
js中apply与call用法
2011-05-14 18:26 1113JavaScript中有一个call和ap ... -
js中2个等号与3个等号的区别
2011-05-08 10:39 1055首先,== equality 等同,= ... -
js call
2011-05-08 08:28 794http://www.cnblogs.com/sweting/ ... -
在滚动div上的div不随滚动条滚动
2010-12-01 17:21 1235在滚动div上的div不随滚动条滚动原因是浮动层样式 z-in ... -
解析JS的prototype继承机制
2009-12-30 10:26 1092许多人一直对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中call与apply方法
在JavaScript中,`call`和`apply`是两个非常重要的方法,它们都用于改变函数调用时的上下文(即`this`的值),并且可以灵活地传递参数。本篇文章将深入探讨这两个方法的用法、区别以及实际应用场景。 `call`方法...
JavaScript中的继承通常通过原型链实现,`call`和`apply`能帮助我们创建子类并继承父类的方法。例如: ```javascript function baseA() { // base Class A code } function childA() { baseA.call(this); // ...
淡淡简单描述javascript中方法apply和call
JavaScript中的`call`和`apply`是两种非常重要的方法,它们都用于改变函数内部`this`的指向,并执行该函数。这两个方法都是Function对象的原型方法,因此所有的函数都具备`call`和`apply`。 1. `call`方法: - `...
JS中的call、apply、bind方法详解 随着JavaScript的发展,函数调用对象的改变变得越来越重要。在JavaScript中,call、apply、bind三个方法都是函数对象的方法,它们的作用都是改变函数的调用对象。下面,我们将详细...
在JavaScript中,`call`和`apply`是两个非常重要的函数,它们都允许开发者改变函数执行时的上下文,即`this`的指向。这两个方法主要用于实现函数的绑定和继承,以及处理数组或类数组对象。 首先,我们来看`call`的...
本文实例分析了JavaScript中call和apply方法的区别。分享给大家供大家参考,具体如下: 这两个方法不经常用,但是在某些特殊场合中是非常有用的,下面主要说下它们的区别: 1、首先,JavaScript是一门面向对象的语言...
JavaScript中的`call`和`apply`是两种非常关键的方法,它们允许我们改变函数内部`this`的指向,同时也为实现模拟继承提供了可能。虽然JavaScript不直接支持类继承,但通过`call`和`apply`,我们可以实现类似的效果。...
在JavaScript中,`call`和`apply`是两种非常重要的函数调用方式,它们都用于改变函数内部`this`的指向,实现函数的...在实际开发中,理解和熟练掌握`call`和`apply`方法对于编写高效、灵活的JavaScript代码至关重要。
call和apply是JavaScript中的两个重要方法,它们都是Function.prototype中的方法,这意味着每个函数都可以使用这两个方法。它们的作用是改变函数体内的this对象的值,以扩充函数赖以运行的作用域。 相同点:call和...
在JavaScript中,call与apply是两个非常重要的关键字,它们的功能是改变函数执行时的上下文,也就是函数体内的this指向。通过call和apply可以调用某个函数,并且显式地指定该函数内部的this变量的值。 ### call和...
本文针对JavaScript中三个重要的函数方法——call、apply和bind,进行详尽的分析,并在文章的结尾部分对这三个方法之间的联系和区别进行了概括,以便于读者更深入地理解它们的用途和应用场景。 首先,我们来探讨...
JavaScript 中的 call、apply、bind 方法详解 JavaScript 中的 call、apply、bind 方法是 Function 对象自带的三个方法,这三个方法的主要作用是转变函数中的 this 指向,从而可以达到“接花移木”的效果。下面将对...
### JavaScript中call与apply方法的学习笔记 在JavaScript编程中,`call`和`apply`是两个非常重要的方法,它们都是`Function`原型上的方法,用于改变函数的`this`上下文(即函数体内`this`的指向)到指定的对象,并...
1、call,apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以每个Function对象实例(就是每个方法)都有call,apply属性。既然作为方法的属性,那它们的使用...
JavaScript中的`call`和`apply`是两种函数调用的方式,它们主要用于改变函数内部的`this`指向。`call`方法允许你将一个函数绑定到指定的上下文(即`this`值)并立即调用,它接受一个或多个参数,参数列表直接跟在...
### 理解JavaScript中的`caller`, `callee`, `call`, `apply` #### Arguments对象:JavaScript函数调用的参数管理器 在JavaScript中,每个函数都有一个隐含参数`arguments`,它允许开发者访问传递给函数的所有参数...
### JavaScript中的apply与call用法详解 #### 一、引言 在JavaScript中,`apply`与`call`是两个非常重要的函数,它们都属于`Function.prototype`的一部分,因此每一个函数对象都拥有这两个方法。这两个方法的主要...