apply和call它是javascript一个非常重要的方法,。虽然与程序平时很少接触,但JS到处都在使用这个框架2方法。

2个方法是在Function.prototype中。也就是说每一个JS函数都有这2个方法。

alert(Function.prototype.hasOwnProperty("apply"));//true
alert(Object.prototype.hasOwnProperty("apply"));//false

这2个函数完毕的功能是等价的。唯一的区别在于參数形式不同。

function Person(name,age)
{
alert("name=" + name +",age="+age);
} Person.call({},"aty",10);
Person.apply({},["aty",10]);

方法的具体介绍 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function

java中通过反射调用方法的代码例如以下:

Method method = clazz.getDeclaredMethod("say");
method.invoke(clazz.newInstance(),null);

能够看到:java反射方法调用与apply/call是非常相似的。Person相当于method,代表着调用什么方法。{}和clazz.newInstance()相似,代表调用哪个对象(即方法中的this),最后面是方法须要的參数列表。

我们知道在java中thiskeyword代表当前对象,我们无法改动。javascript中直接调用函数,跟java函数调用一样,this就代表当前对象。

假设想改动this。那么能够使用apply这样的方式。

aobj.afunction("1");

aobj.afunction.apply(bobj,["1"]);

第一种方式,函数中的this就是aobj,这是我们比較熟悉的做法;另外一种方式。函数中的this是bobj。

通过apply。对象bobj能够使用aobj中定义的方法。

function FunctionA(name)
{
this.name=name;
} function FunctionB(name,age)
{ FunctionA.apply(this,arguments);
this.age=age;
} var bObj = new FunctionB("qq",11);

使用F12调试工具能够发现:bObj对象中有name和age属性。

版权声明:本文博主原创文章,博客,未经同意不得转载。

最新文章

  1. spring源码分析之<context:component-scan/>vs<annotation-config/>
  2. 理解Compressed Sparse Column Format (CSC)
  3. 1.44tft
  4. truncate 、delete与drop区别
  5. 第四章第四个例题(LRJ)
  6. VC++ LoadLibrary失败,错误126(找不到指定的模块)
  7. Spring web.xml配置文件解析
  8. windows server 2008 支持 .net framework 4.0
  9. 通用安全字符串输入,彻底替换server.htmlencode
  10. 【技术贴】解决Mysql启动服务报错1067 进程意外终止
  11. 发送trim值
  12. mysql 事务控制
  13. 【安卓】eclipse中不可错过的几个秘密、!
  14. sap的示例代码
  15. 如何用C#使用java
  16. linux服务器被攻击处理过程
  17. PLSQL程序流程
  18. EntityFramework Core是否可以映射私有属性呢?了解一下。
  19. C# 使用Newtonsoft.Json读写Json文件
  20. 使用Jquery easyui datagrid请求servlet没有反应的解决办法

热门文章

  1. 支持多QQ登录的软件
  2. c#利用VM_COPYDATA实现进程间通信
  3. xhtml规范
  4. (转)sql中 in 、not in 、exists、not exists 用法和差别
  5. Java的优先级
  6. 0301——Notification 通知
  7. keydown和keypress
  8. hdu Intelligent IME
  9. line-height下的dispay:inline-block垂直居中
  10. JSON.stringify 语法实例讲解 字符串