- 浏览: 407624 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 697转自: http://blog.csdn.net/ben_g ... -
js闭包几种写法
2012-04-18 14:07 834访问:http://wwww.iteye.com/blog/5 ... -
js arguments对象
2012-04-13 10:12 560在javascript中,不需要明确指出参数名,就能访问它们。 ... -
js call
2012-04-12 14:36 554call 方法 请参阅 应用于 ... -
JS原型及原型实现的继承
2012-04-12 11:04 742JS原型及原型实现的继承 时间:2010-06-09 09 ... -
这段js脚本最后面的一对圆括号是什么意思?-----匿名函数
2012-04-11 14:51 1129例(function(){ if(typeof Drag ... -
js闭包
2012-04-05 10:29 691一、什么是闭包? “官 ... -
getBoundingClientRect() 来获取页面元素的位置
2011-06-29 07:40 704http://www.cnblogs.com/qieqing/ ... -
关于JS中的双感叹号
2011-06-14 07:50 1266!!variant will return boolean t ... -
js中apply与call用法
2011-05-14 18:26 1076JavaScript中有一个call和ap ... -
js中2个等号与3个等号的区别
2011-05-08 10:39 1037首先,== equality 等同,= ... -
js call
2011-05-08 08:28 764http://www.cnblogs.com/sweting/ ... -
在滚动div上的div不随滚动条滚动
2010-12-01 17:21 1145在滚动div上的div不随滚动条滚动原因是浮动层样式 z-in ... -
解析JS的prototype继承机制
2009-12-30 10:26 1056许多人一直对JS的prototype继承机制不明了,到底在创建 ... -
js正则表达式使用
2009-08-20 15:10 728一,概述 1,正则表达式,可以说是任何一种编程语言都提供的机 ... -
Javascript Closures(javascript闭包概念)
2009-08-03 18:29 790原文:http://hi.baidu.com/ci ... -
5-18 CSS3伪类选择器:nth-child()
2009-08-03 11:30 977原文:http://hi.baidu.com/%C ... -
KeyDown,KeyPress 和KeyUp
2009-07-30 13:18 2170最近在做一个程序,需要实现窗口下的F5 刷新功能。 研究了一 ... -
浅谈js中的Insertion对象
2009-07-30 10:40 766首先,这个对象是其他类似功能的根。它没有任何属性和方法。在这个 ...
相关推荐
JavaScript中call与apply方法
NULL 博文链接:https://ufoqhmdt.iteye.com/blog/1676748
淡淡简单描述javascript中方法apply和call
详解js中call与apply关键字的作用.docx
js中call与apply的用法小结.docx
本文实例分析了JavaScript中call和apply方法的区别。分享给大家供大家参考,具体如下: 这两个方法不经常用,但是在某些特殊场合中是非常有用的,下面主要说下它们的区别: 1、首先,JavaScript是一门面向对象的语言...
js中call,apply,setCapture,releaseCapture的使用.pdf
JS 中没有诸如 Java、C#等高级语言中的 extend 关键字,因此 JS 中没有继承的概念,如果一定要继承的话,call 和 apply 可以实现这个功
我们可以将call和apply看做是某个对象的方法,通过调用方法的形式来间接调用函数
1、call,apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以每个Function对象实例(就是每个方法)都有call,apply属性。既然作为方法的属性,那它们的使用...
JS中的call、apply、bind方法详解.pdf
本文主要Javascript中call,apply,bind方法的进行全面分析,并在文章结尾对call,apply,bind方法的联系和区别做了总结,具有很好的参考价值,需要的朋友一起来看下吧
本文主要介绍js中call与apply关键字的作用以及它们的用法,具体实例如下,希望对大家有所帮助
JavaScript函数之call、apply以及bind方法案例详解 总结 1、相同点 2、区别 call() 方法 /* 正常模式 */ let obj = { sum(a, b) { console.log(this) return a + b } } // 执行 sum 函数的 apply、bind...
理解JavaScript的caller callee call apply
在 javascript 中,call 和 apply 都是为了改变某个函数运行时的上下文(context)而存在的,一般来说,this总是指向调用某个方法的对象,但是使用call()和apply()方法时,就会改变this的指向 语法: apply() 接收两...
javascript callApply代码示例