js实现bind方法
Posted ninefrom
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js实现bind方法相关的知识,希望对你有一定的参考价值。
//目标函数 function fun(...args) { console.log(this); console.log(args); } //目标函数原型对象上的一个方法cher func.prototype.cher = function () { console.log(1); } //bind传入参,一个是要改变this指向的对象,后面的是要传入的实参数值 Function.prototype.myBind = function (obj,...args) { var _that = this; //bing会返回一个新的函数 var newBind = function(...list) { //使用apple方法把this指向改变 _that.apply(obj,[...list,...args]); } //在用bind改变this指向的时候,返回的函数不会立即执行。如果用返回的函数作为构造函数实例化一个对象的时候,这个对象的原型对象还是目标对象的原型对象,所以要纠正过来 newBind.prototype = Object.create(_that.prototype); newBind.prototype.constructor = _that; //返回这个函数 return newBind; } var fn2 = fun.myBind({a:1},4,3); var newFn2 = new fn2(1,2); //{a:1} 1,2,4,3 console.log(newFn2); //newBind{} console.log(newFn2.cher()); //1
以上是关于js实现bind方法的主要内容,如果未能解决你的问题,请参考以下文章