Andot蚁点 javascript 基础之 call, apply, bind 系统,扎实的 javascript 语言基础是一个优秀的前端工程师必须具备的。在看了一些关于 call,apply,bind 的文章后,我还是打算写下这篇总结,原因有几个。首先,在如今 ES6 大行其道的今天… 余腾靖打开知乎App 在「我的页」右上角打开扫一扫 其他扫码方式:微信 下载...
bind() 方法与 apply 和 call 很相似,也是可以改变函数体内this的指向。 MDN开发文档规定: MDN的解释是:bind()方法会创建一个新函数,称为绑定函数,当调用这个绑定函数时,绑定函数会以创建它时传入 bind()方法的第一个参数作为this, 传入bind() 方法的第二个以及以后的参数加上绑定函数运行时本身的参数按照顺序...
call、bind、apply都是Function原型上的方法,用于改变this的指向 自定义函数 js中的call、bind、apply是用c++代码实现的,我们这里使用js代码做一个模式,没有把所有的边界情况考虑进来,仅做一个简单的实现,三个函数在使用的时候有一些需要注意的地方,在定义的时候需要把这些情况考虑进去 当传入的值是基本数据类型时,c...
下面是bind方法的代码实现:Function.prototype.myBind = function(obj, ...args1) {// 缓存调用bind的函数const self = this;// 嵌套一层函数,返回函数调用apply方法的结果// 此处也可以补充传参return function(...args2) {return self.apply(obj, [...args1, ...args2]);}}在上述实现中,使用了re...
因此bind()、apply() 和 call() 是每个 JavaScript 函数都具有的 3 个基本方法。 bind() 你是否和我一起经历过 React 早期的痛苦岁月;那时我们还在使用这样的类组件和事件处理程序? 这只是 bind() 的多种应用之一——一种被严重低估...
使用apply、call、bind new实例化一个对象 1,2两点上面已经讲过,下面介绍下apply、call、bind的用法 例如: 代码语言:javascript 代码运行次数:0 运行 AI代码解释 functionCat(name){this.name=name;}functionDog(name){this.name=name;}Cat.prototype.eat=function(food){console.log(this.name+" eat "+food)...
在JavaScript中,如果想要改变当前函数调用的上下文对象的时候,我们都会联想到call、apply和bind。比如下面 var name = 'window name'; var obj = { name: 'call_me_R' }; function sayName(){ console.log(this.name); } sayName(); // window name sayName.call(obj); // call_me_R 那么,call, ...
1,call()、apply()、bind() 都是用来重定义 this 这个对象的! 如: obj.myFun.call(db);// 德玛年龄 99obj.myFun.apply(db);// 德玛年龄 99obj.myFun.bind(db)();// 德玛年龄 99 以上出了 bind 方法后面多了个 () 外 ,结果返回都一致!
bind、call、apply 的不同点 bind 会返回一个新的函数,目标函数在新函数调用时才会执行 let newFunc = obj.myFn.bind(newObj,'北京','上海'); newFunc(); 1. 2. call 的传参方式与bind相同(第2-N个参数用,分隔),但目标函数会立即执行 obj.myFn.call(newObj,'北京','上海') ...
在前文,非常详细的介绍了JS里this的上下文对象及用法,知道了this是由其上下文决定的——它是全局的、在对象中、在构造函数或类中、或在 DOM 事件处理程序上,它是隐式引用的。但是,如果使用call、apply或bind方法,你可以明确确定this应该引用什么。 何时使用call、apply或bind?