Loading

bind/ call实现方法(javaScript)

 call方法实现

```js
// 用于获取对象中的值
function gtname() {
    console.log(this.name);
  }
// 对象
let obj = {
   name: "kyle",
   num: 0,
};
// 实现方法
Function.prototype.myCall = function (obj, ...args) {
   let self = this;
   obj.$$$fn = self;
   delete obj.$$$fn(...args);
 };
// 结果
gtname.myCall(obj);
```
 
 

bind方法实现:利用闭包实现

```js

Function.prototype.myBind = function (obj) {
   let self = this;
   let $obj = {
      ...obj,
    };
    $obj.$fn = self;
    return function () {
      $obj.$fn();
    };
};

let res = addNum.myBind(obj);
function addNum() {
  this.num++;
}
// 结果
setInterval(res, 200);

```

 

 

 

 

posted @ 2021-11-29 23:10  guxuanyan  阅读(13)  评论(0)    收藏  举报