首页 > 编程语言 >[Javascript] Write .call()

[Javascript] Write .call()

时间:2024-10-18 14:31:48浏览次数:7  
标签:Object const Javascript ctx Write call key myCall method

Function.apply.myCall = function (ctx, ...args) {
  ctx = ctx === null || ctx === undefined ? globalThis : Object(ctx);
  const fn = this;
  const key = Sybmol("fn");
  // we don't want user can see [Sybmol("key")] in Function prototype
  // that's why we use Object.defineProperty to make it non-enumerable
  Object.defineProperty(ctx, key, {
    enumarable: false,
    value: fn,
  });
  const r = ctx[key](...args);
  return r;
};

function method(a, b) {
  console.log("args:", a, b);
  console.log("this:", this);
}

method.myCall(1, 2, 3); // this: [Number: 1]
method.myCall(null, 2, 3); // this: [global]
method.myCall(undefined, 2, 3); // this: [global]
method.myCall({}, 2, 3); // this: {}

 

标签:Object,const,Javascript,ctx,Write,call,key,myCall,method
From: https://www.cnblogs.com/Answer1215/p/18474249

相关文章

  • ​Meteor:全栈JavaScript开发框架的先驱
    Meteor是一个功能强大且易用的全栈JavaScript框架,它简化了现代Web应用的开发流程,从数据库到用户界面都可以通过一套统一的技术栈来实现。无论你是构建实时应用还是想要一个快速的原型开发工具,Meteor都能为你提供完整的解决方案。本文将详细介绍Meteor的显著特性、使用方式......
  • JavaScript 数据类型转换全解析:转换为数值、字符串与布尔型
    目录非VIP用户可前往公众号“前端基地”进行免费阅读转换为数值型转换为数值型Number()函数parseInt()函数parseFloat()函数转换为字符串型转换方法toString()函数String()函数转换为布尔型转换方法Boolean()函数非VIP用户可前往公众号“前端基地”进行免......
  • JavaScript初级课程 variables
    下载node。1.申明变量variables.jsletmessage="Hello!";message="World";console.log(message);nodevariables.js2.申明不会变的变量constCOLOR_GREEN="green";console.log(COLOR_GREEN)3.数据类型DataTypes=[number,BigInt,string......
  • [转]Learn Power Platform Power Apps Dataverse Write a plug-in
    Learn PowerPlatform PowerApps Dataverse Writeaplug-inInthisarticleIPlugininterfacePluginBaseabstractclassServicesyoucanuseinyourcodePuttingitalltogetherShow2moreYoucancreate plug-ins byusingoneofthefollowingmetho......
  • JavaScript从零学起 —— 数据类型(进阶篇2)
    说明:此文章用作个人学习记录,若有任何问题或建议欢迎大家在评论区讨论文章目录前言一、Boolean(布尔值)1.定义2.实现3.用法示例4.常见问题与解决方法二、Undefined(未定义)1.定义2.实现3.常见问题与解决方法三、Null(空值)1.定义2.实现3.用法示例4.常见问题与......
  • JavaScript网页设计案例
    1.引言在前端开发中,JavaScript无疑是一个非常重要的语言。它不仅可以用于表单验证、动态内容更新,还能实现复杂的交互效果和动画。通过JavaScript,网页变得更加生动和富有互动性。本文将通过一个具体的网页设计案例,详细讲解如何使用JavaScript进行网页开发,包括准备工作、基础理......
  • 实验三: JavaScript数组与函数
    实验目的熟练掌握常用JavsScript的数组、自定义函数、作用域。实验内容数组定义及元素获取;数组的遍历;数组内容的增删改查;数组的排序;数组的反转、截取、合并、元素拼接函数的声明;函数的调用;匿名函数;作用域。实验步骤:数组定义及元素获取;数组的遍历;数组内容的增删改查......
  • 在调试网页 JavaScript 脚本时,遇到 Error: Incorrect contents fetched, please reloa
    在调试网页JavaScript脚本时,遇到Error:Incorrectcontentsfetched,pleasereload这样的错误,通常表明网页内容的获取过程出现了问题。这种错误一般与页面加载、缓存管理、网络请求、脚本执行顺序等因素密切相关。为了更详细地分析问题,处理并解决这一错误,下面将从多个......
  • 深入理解Java并发读写锁—ReentrantReadWriteLock
    ReentrantReadWriteLock使用场景ReentrantReadWriteLock是Java的一种读写锁,它允许多个读线程同时访问,但只允许一个写线程访问(会阻塞所有的读写线程)。这种锁的设计可以提高性能,特别是在读操作的数量远远超过写操作的情况下。在并发场景中,为了解决线程安全问题,我们通常会......
  • Javascript算法——二分查找
    1.数组1.1二分查找1.搜索索引开闭matters!!![left,right]与[left,right)/***@param{number[]}nums*@param{number}target*@return{number}*/varsearch=function(nums,target){letleft=0;letright=nums.length-1;//[left,right],相等时......