码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • js实现一个 bind 函数


     
     
    ⭐️  作者:船长在船上
    🚩 主页:来访地址船长在船上的博客
    🔨  简介:高级前端开发工程师,专注前端开发,欢迎咨询交流,共同学习!

    👉👉👉 欢迎来访船长在船上的博客,如有疑问可以留言、评论,看到后会及时回复。  

     
     

    40a87f64b0be4bf9ac4bcb2bbcf5fdeb.png

     

    目录

    原理:通过 apply 或者 call 方法来实现

    (1)初始版本

    (2) 原型链


     

     

    原理:通过 apply 或者 call 方法来实现

     
    区别:
     

     

    function.apply(obj,argArray)//argArray为数组

    function.call(obj,arg1,arg2,arg3…)//后面的参数为列表项

    apply()和call()不传参数时候功能是相同的,但是它们接受的参数不同,apply的第二个参数只能接受一个数组,并且apply()只能是二个参数,而call()的第二个参数起接受的多个参数列表项,参数是可以多个。

     

    (1)初始版本

     
    1. Function.prototype.bind=function(obj,arg){
    2. var arg=Array.prototype.slice.call(arguments,1);
    3. var context=this;
    4. return function(newArg){
    5. arg=arg.concat(Array.prototype.slice.call(newArg));
    6. return context.apply(obj,arg);
    7. }
    8. }

    (2) 原型链

     
    为什么要考虑?因为在 new 一个 bind 过生成的新函数的时候,必须的条件是要继承原
    函数的原型
     
    1. Function.prototype.bind=function(obj,arg){
    2. var arg=Array.prototype.slice.call(arguments,1);
    3. var context=this; var bound=function(newArg){
    4. arg=arg.concat(Array.prototype.slice.call(newArg));
    5. return context.apply(obj,arg);
    6. }
    7. var F=function(){}
    8. //这里需要一个寄生组合继承
    9. F.prototype=context.prototype;
    10. bound.prototype=new F();
    11. return bound;
    12. }

     

     

    文章推荐:

    (一)前端开发面试会问到的问题有哪些?

    (二)前端开发面试会问到的问题有哪些?

    (三)CSS前端开发面试会问到的问题有哪些? 

    (四)CSS前端开发面试会问到的问题有哪些?

    (五)CSS前端开发面试会问到的问题有哪些?

     

    🔔  感谢:如果觉得博主的文章不错或者对你的工作有帮助或者解决了你的问题,可以关注、支持一下博主,如果三连收藏支持就会更好,在这里博主不胜感激!!!如有疑问可以留言、评论,看到后会及时回复。  

     

  • 相关阅读:
    一文读懂数据库发展史
    大数据平台功能
    【数据结构与算法】解题20240313
    SCT1270FQAR/TPS61089RNRR
    微服务框架 SpringCloud微服务架构 20 RestClient 操作索引库 20.1 导入demo
    联想小新如果使用蓝牙鼠标在关闭了触摸板的情况下不小心关掉了蓝牙该如何处理?
    Nebula Graph图数据库教程介绍
    搭建docker,docker搭建达梦数据库,详细【图文】
    Syntax Error: Error: Missing binary. See message above.
    fmp4打包H265视频流
  • 原文地址:https://blog.csdn.net/SmartJunTao/article/details/126126409
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号