ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

call

2022-05-23 10:33:57  阅读:148  来源: 互联网

标签:console log window call Func obj


我又双叒忘记了 call 作用

  那个函数调用 call,哪个函数就会执行,而在 call 方法后面接参数的话,这个参数对象会作为函数的 this 对象,如果不添加参数,则默认 this 为 window【A】,实际上,如果是直接调用, this 也默认是 window【B、B1】。
  如果函数中,有为 this 对象添加属性,即 this.a = 4,则call 方法中的参数所有者就会被设置有 a 属性【C】。

  call 只是将(调用)所有者作为 this 对象而已,并不使得所有者即对象参数拥有这个函数,不要混淆会变成对象字面量形式,也就是 obj.Func(),不会存在。

function Func() {
    this.a = 4;
    this.b = 5;
    return this.a + this.b;
  }

  console.log('情况 【B】 ');
  Func();
  console.log(window.b); // 5

  console.log('情况 【B1】')
  function funcOut() {
    this.a = 6;
    this.b = 8;
    console.log(Func()); // 8
  }
  funcOut();

  console.log('情况 【A】');
  Func.call();
  console.log(window.a); // 4

  console.log('情况 【C】');
  const obj = {};
  console.log(Func.call(obj)); // 9

  console.log('情况 【D】');
  console.log(obj.a); // 4
  console.log(obj.b); // 5
  console.log(obj); // {a: 4, b: 5} 没有 Func 方法属性哦
example

 

标签:console,log,window,call,Func,obj
来源: https://www.cnblogs.com/L-xjco/p/16300246.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有