重构内置类Function原型上的call方法

这篇具有很好参考价值的文章主要介绍了重构内置类Function原型上的call方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

重构内置类Function原型上的call方法

// => 重构内置类Function原型上的call方法
~(function () {
  /**
   * call: 改变函数中的this指向
   *  @params
   * 	 context 可以不传递,传递必须是引用类型的值,因为后面要给它加 fn 属性
   **/
  function myCall(context) {
    // => context: call方法中的第一个参数 => 执行上下文/执行主体,即this的指向
    // => this: fn
    context = context || window;
    let args = [],
      ret = null; // => args要存方法执行时传入的除第一个参数后的所有参数,ret用来接收函数执行返回的结果
    for (var i = 1; i < arguments.length; i++) {
      args.push(arguments[i]);
    }
    context.foo = this; // => 为对象添加 foo 方法, this指向调用myCall的函数
    ret = context.foo(...args); // => 函数执行, ...扩展运算符把数组中的每一项展开
    delete context.foo; // => 删除添加的方法(到这一步foo已经没用了)
    return ret;
  }
  Function.prototype.call = myCall; // => 扩展到内置类的原型上
})();

// => 验证
let obj = {
  name: "obj name",
};
function fn(n, m) {
  console.log(this);
  return n + m;
}
fn(); // => this: window
fn.call(obj, 100, 200); // this: obj
代码优化:
~(function () {
  function myCall(context = window) {
    context.foo = this;
    let args = [...arguments].slice(1),
      ret = context.foo(...args);
    delete context.foo;
    return ret;
  }
  Function.prototype.call = myCall;
})();

希望给你们带来帮助,有更好的方法也希望发出来呦,期待你们的指点文章来源地址https://www.toymoban.com/news/detail-636884.html

到了这里,关于重构内置类Function原型上的call方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • chatGPT的Function calling示例

    查看执行结果: second_response 返回了一堆 second_response.choices[0].message second_response.choices[0].message.role second_response.choices[0].message.content 可看到大模型又重新组织了语言,输出给用户 chatGPT的Function calling功能允许用户通过消息和模型进行交互,并根据用户提供的函数调用来获取所需

    2024年02月04日
    浏览(48)
  • call to non-‘constexpr‘ function

    在尝试迁移 openpnp - Smoothieware project 从gcc命令行 + MRI调试方式 到NXP MCUXpresso工程. 在加了头文件路径后, 还有一些语法错误. 这和编译器语法有关系. 在运行BuildShell.cmd后, 查看gcc版本如下. Smoothieware使用c++写的. 其中一条错误如下: 查了一下这条错误的原因, 就是语法错误. 在swi

    2024年02月04日
    浏览(55)
  • 【OpenAI】ChatGPT函数调用(Function Calling)实践

    6月13日OpenAI在Chat Completions API中添加了新的函数调用(Function Calling)能力,帮助开发者通过API方式实现类似于ChatGPT插件的数据交互能力。 本文在作者上一篇文章《私有框架代码生成实践》的基础上,依旧使用自然语言低代码搭建场景作为案例,将嵌入向量搜索(Embedding)获

    2024年02月12日
    浏览(50)
  • 传统软件集成AI大模型——Function Calling

    目前为止好多人对chatGPT的使用才停留在OpenAI自己提供的网页端上,也许对GPT的了解还不够深入。最近稍微看了些大模型相关的内容深刻感觉到大模型技术对软件行业的影响。 本人并非数学专业,对大模型的理解也仅仅只是看了下transformar模型以及简单fine turn的原理。 了解到

    2024年02月03日
    浏览(42)
  • 【Azure OpenAI】OpenAI Function Calling 101

    本文是结合 github:OpenAI Function Calling 101在 Azure OpenAI 上的实现: Github Function Calling 101 如何将函数调用与 Azure OpenAI 服务配合使用 - Azure OpenAI Service 使用像ChatGPT这样的llm的困难之一是它们不产生结构化的数据输出。这对于在很大程度上依赖结构化数据进行系统交互的程序化系

    2024年02月10日
    浏览(41)
  • AIGC: 关于ChatGPT中Function Call的调用

    Function Call 概念 关于 GPT 中API的function参数,提供了一些能力 这个函数调用是 Open AI 在2023年的6.13号发布的新能力 根据它的官方描述, 函数调用能力可以让模型输出一个请求调用函数的消息 其中包含所需调用函数的信息,以及调用函数时所需携带的参数的信息 这种方式是一种

    2024年02月04日
    浏览(68)
  • 原型链中:为什么Function.proto==Function.prototype?

    背景: 在 JavaScript 中,每个函数(包括构造函数)都是一个对象,而对象都有一个  __proto__  属性,指向它们的原型。当你创建一个函数时,JavaScript 引擎会自动为该函数创建一个原型对象,并将其关联到函数的  prototype  属性上。 解释 根据规范, Function.__proto__  表示  Fu

    2024年02月10日
    浏览(41)
  • JavaScript Es6_2笔记 (深入对象 + 内置构造函数 + 包装类型)+包含实例方法

    了解面向对象编程的基础概念及构造函数的作用,体会 JavaScript 一切皆对象的语言特征,掌握常见的对象属性和方法的使用。 了解面向对象编程中的一般概念 能够基于构造函数创建对象 理解 JavaScript 中一切皆对象的语言特征 理解引用对象类型值存储的的

    2024年02月12日
    浏览(47)
  • 【OpenAI】ChatGPT函数调用(Function Calling)实践 | 京东云技术团队

    6月13日OpenAI在Chat Completions API中添加了新的函数调用(Function Calling)能力,帮助开发者通过API方式实现类似于ChatGPT插件的数据交互能力。 本文在作者上一篇文章《私有框架代码生成实践》的基础上,依旧使用自然语言低代码搭建场景作为案例,将嵌入向量搜索(Embedding)获

    2024年02月12日
    浏览(52)
  • 大模型开发(十一):Chat Completions模型的Function calling功能详解

    授权声明: 本文基于九天Hector的原创课程资料创作,已获得其正式授权。 原课程出处:九天Hector的B站主页,感谢九天Hector为学习者带来的宝贵知识。 请尊重原创,转载或引用时,请标明来源。 全文共6000余字,预计阅读时间约15~25分钟 | 满满干货(附代码案例),建议收藏!

    2024年02月16日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包