js call()方法的作用

JS的call方法的作用解释,简单易懂

2016年09月27日 15:49:15

阅读数:14300

先看看关于call()的官方解释,“调用一个对象的一个方法,以另一个对象替换当前对象。”,看了这样的解释,或许让你更摸不着头脑了。看例子:

 

 
  1. var x = "我是全局变量";    //定义全局变量x

  2. function a(){         //定义函数类结构a  

  3. this.x = "我是在函数类结构a中声明的哦";

  4. }

  5. //定义普通函数,弹出当前指针所包含的变量x的值

  6. function f(){

  7. alert (this.x);

  8. }

  9. //返回值为“我是在函数类结构a中声明的哦”

  10. f.call(new a());

我的理解是,f.call(new a())就是把函数(其实也是对象)f复制到被调用对象“new a()”下面去解析,事实上和下面这段代码的解析结果一样:

 

 
  1. function a(){

  2.   this.x = "我是在函数类结构a中声明的哦";

  3.   alert(this.x);

  4. }

  5. a();

只不过此时变量X的作用域不同而已,咿…看起来好像有点继承的味道哦,难道不是吗?在上例中,f完全被构造函数a的实力对象继承了,如果说这还不足以说明a.call(b)是一种继承模式,那么再看一个更具有继承味道的用法吧。

 

 
  1. function f(){

  2. this.a ="a";

  3. this.b = function(){

  4. alert("b");

  5. }

  6. }

  7. function e(){

  8. f.call(this);

  9. }

  10. var c = new e();

  11. alert(c.a); //弹出a

  12. c.b(); //弹出b

在这个例子中,只要会使用浏览器的朋友,都能看得出来e完全继承了f的属性和方法,否则是无法解释的,因为在e中并没有定义属性a和b,那么按常理推断在e的实例对象c中,并不会出现这两个属性。

转载地址:https://blog.csdn.net/ywl570717586/article/details/52681392/

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值