原生js實現bind call apply 二

2021-10-12 07:18:56 字數 1102 閱讀 6058

this

.name =81;

var obj =

}

var res = obj.getname;

res();

// 輸出 81 array(0)

// 輸出array(0) 是因為我沒有傳遞引數,所以params的長度為0

這樣的呼叫方法,會因為 this 指向的問題得不到正確的值syw,所以要在呼叫時改變 this 指向,即可輸出正確的值:

var res = obj.getname;

res.

call

(obj)

;// syw array(0)

res.

(obj)

;// syw array(0)

進入觀察階段:

那麼轉換一下思維【以上的例子為例】:

ok,明白了怎麼做,我們就實現一下。

進入實現階段:

首先,看一下完整的實現**:

// 原生js實現call

function.prototype.

mycall

=function

(currentthis,

...params)

// 建立乙個不重複的常量

const unique =

symbol

('anything');

currentthis[unique]

=this

;// 呼叫函式並將結果返回

let result = currentthis[unique]

(...params)

;// 刪除增加的屬性

delete currentthis[unique]

;return result;

}

**解釋:

為什麼在function.prototype上實現我們自己的 mycall 方法,這個我上一章節講的有,有不懂的小夥伴可以使用上面提供的傳送門。

原生js實現Ajax

一般來說,大家可能都會習慣用jquery提供的ajax方法,但是用原生的js怎麼去實現ajax方法呢?jquery提供的ajax方法 ajax success function error function 原生js實現ajax方法 var ajax obj.send post function u...

原生js實現Ajax

ajax success function error function 原生js實現ajax方法 var ajax xhr.send datat應為 a a1 b b1 這種字串格式,在jq裡如果data為物件會自動將物件轉成這種字串格式 post function url,data,fn xhr...

原生js實現Ajax,JSONP

利用script標籤可以跨域請求資源解決跨域問題。詳細解釋可以看徹底弄懂跨域問題 原生js實現ajax function ajax params params.data params.data var json params.jsonp jsonp params json params 判斷是jso...