首页 > 其他分享 >手写bind

手写bind

时间:2023-11-25 11:32:20浏览次数:23  
标签:console log bind args arguments var 手写


目录

前言

导语

 代码部分


前言

我是歌谣 歌谣的意志是永恒的 放弃很容易 但是坚持一定很酷

导语

手写bind

手写bind_返回函数

编辑

 代码部分

``` Function.prototype.mybind = function (target) {

//target:改变返回函数执行时的this指向
  var obj = target || window;
  console.log(arguments,"arguments")
  var args = [].slice.call(arguments, 1); //获取bind时传入的绑定实参
  var args1 = [].slice.call(arguments, 0); //获取bind时传入的绑定实参
  console.log(args,"args")
  console.log(args1,"args1")
  var self = this; //要bind的函数
  console.log(self,"self")
  var _fn = function () {
    var _args = [].slice.call(arguments, 0); //新函数执行时传递的实际参数
    console.log(_args,"_args")
    return self.apply(obj, args.concat(_args));
  }
  return _fn
}


var name = 'fangfang';
var obj = {
  name: 'geyao'
};

function fn(a, b, c) {
  console.log(a + b + c + this.name);
  return a + b + c + this.name
};
fn.mybind(obj,"我的","老婆","是")(); // 我的老婆是geyao

```





标签:console,log,bind,args,arguments,var,手写
From: https://blog.51cto.com/u_14476028/8558581

相关文章

  • 手写线程池——C和C++版本
    内容参考:爱编程的大丙(subingwen.cn)C语言版大致思路采用生产者——消费者模型:生产者:用户向任务队列添加任务,是生产者。消费者:线程池里面的线程从任务队列中取出任务是,是消费者。任务队列:单个任务结构:使用结构体封装,其中包含一个函数指针,用于指向要处理的具体任务......
  • std::function 与 std::bind解决类成员函数作为回调函数的问题
    1、std::functionstd::function是一个模板类,其可对C++可调用的对象进行封装,比如,成员函数、静态函数等;它的基本作用是简化调用的复杂程度,归一化调用方式。std::function<int(int,int)>int_function:声明方式为<返回值类型(参数类型1,参数类型2,...)>,其可封装任何可调用的......
  • [WPF]动手写一个简单的消息对话框
    消息对话框是UI界面中不可或缺的组成部分,用于给用户一些提示,警告或者询问的窗口。在WPF中,消息对话框是系统原生(user32.dll)的MessageBox,无法通过Style或者Template来修改消息对话框的外观。因此,当需要一个与应用程序主题风格一致的消息对话框时,只能自己动手造轮子了。确定“轮子”......
  • WPF --- 如何以Binding方式隐藏DataGrid列
    引言如题,如何以Binding的方式动态隐藏DataGrid列?预想方案像这样:先在ViewModel创建数据源People和控制列隐藏的IsVisibility,这里直接以MainWindow为DataContextpublicpartialclassMainWindow:Window,INotifyPropertyChanged{publicMainWindow(){......
  • 【教程】cpp转python Nanobind 实践 加速轻量版 pythonbind11
    主要是尝试一下把c++这边的函数封装打包给python用,选择nanobind的原因是:1.优化速度快,2.生成二进制包小,不过pythonbind11是更为广泛知道的,nanobind也是pythonbind11作者后续做的,可以查看作者写的whyanotherbindinglibaray?总结一下就是:nanobind同样是一个用于创建C++和P......
  • 微信小程序动态生成表单来啦!你再也不需要手写表单了!
    dc-vant-form由于我们在小程序上涉及到数据采集业务,需要经常使用表单,微信小程序的表单使用起来非常麻烦,数据和表单是分离的,每个输入框都需要做数据处理才能实现响应式数据,所以我开发了dc-vant-form,针对原生微信小程序+vant组件构建的自定义表单,开发者可以通过表单配置项来快速生......
  • AJAX手写JQuery框架封装AJAX请求和常见方法实现项目功能省市联动查询效果------AJAX
    建立一个SQL表CREATETABLEt_stu(idBIGINTAUTO_INCREMENTPRIMARYKEY,usernameVARCHAR(255),ageINT,addressVARCHAR(255));INSERTINTOt_stu(id,username,age,address)VALUES(NULL,"zhangsan",15,"广州")INSERTINTOt_stu(id,username,age,address)......
  • 记录--手写一个 v-tooltip 指令
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助前言日常开发中,我们经常遇到过tooltip这种需求。文字溢出、产品文案、描述说明等等,每次都需要写一大串代码,那么有没有一种简单的方式呢,这回我们用指令来试试。功能特性支持tooltip样式自定义支持tooltip内容......
  • 手写基础vuex
    实现一个插件:声明Store类,挂载$storeStore具体实现:创建响应式的state,保存mutations、actions和getters实现commit根据用户传入type执行对应mutation实现dispatch根据用户传入type执行对应action,同时传递上下文实现getters,按照getters定义对state做派......
  • 深度学习算法原理实现——自写神经网络识别mnist手写数字和训练模型
    代码来自:https://weread.qq.com/web/reader/33f32c90813ab71c6g018fffkd3d322001ad3d9446802347《python深度学习》fromtensorflow.keras.datasetsimportmnistfromtensorflow.kerasimportoptimizersimporttensorflowastfimportnumpyasnpclassNaiveDense:d......