前端知識儲備(一)「this」

2021-10-06 15:19:21 字數 2566 閱讀 4755

答: this 就是乙個物件。不同情況下 this 指向的不同,有以下幾種情況。

答:

var obj =

}// 通過物件的方式呼叫函式

obj.

print()

;// this 指向 obj

function

print()

// 全域性呼叫函式

print()

;// this 指向 window

function

person

(name, age)

var xiaolu =

newperson

('deer',22

);// this = > xaiolu

const obj =

}// 物件呼叫箭頭函式

obj.a(

);// window

var obj =

function

print()

// 通過 call 改變 this 指向,列印出來是obj的json

print.

call

(obj,1,

2,3)

;print.

(obj,[1

,2,3

]);// 通過 bind 改變 this 的指向,列印出來是obj的json

let fn = print.

bind

(obj,1,

2,3)

;fn()

;

如果我們使用上邊的方法改變箭頭函式的 this 指標,會發生什麼情況呢?能否進行改變

// this 為呼叫的函式

// context 是引數物件

function.prototype.

mycall

=function

(context)

// 不傳參預設為 window

context = context || window

// 新增 fn 屬性,將值設定為需要呼叫的函式

context.fn =

this

// 將 arguments 轉化為陣列將 call 的傳參提取出來 [...arguments]

const args = array.

from

(arguments)

.slice(1

)// 傳參呼叫函式

const result = context.fn(

...args)

// 刪除函式

delete context.fn

// 返回執行結果

return result;

}

function.prototype.

=function

(context)

// 不傳參預設為 window

context = context || window

// 新增 fn 屬性,將值設定為需要呼叫的函式

context.fn =

this

// 返回執行結果

let result;

// 判斷是否有引數傳入

if(arguments[1]

)else

// 刪除函式

delete context.fn

// 返回執行結果

return result;

}// 普通函式

function

print

(age,age2,age3)

// 自定義物件

var obj =

// 呼叫函式的 call 方法

print.

(obj,[1

,2,3

])

// 手寫乙個 bind 函式

function.prototype.

mybind

=function

(context)

// 擷取傳遞的引數

const args = array.

from

(arguments)

.slice(1

)// _this 指向呼叫的函式

const _this =

this

;// 返回乙個函式

return

functionf(

)else}}

// 普通函式

function

print()

// 自定義物件

var obj =

// 呼叫函式的 call 方法

letf

= print.

mybind

(obj,1,

2,3)

;// 返回物件

let obj1 =

newf()

;console.

log(obj1)

;

PHP儲備知識

php常見的執行模式 mod php 即apache的php模組。把php嵌入到apache中,相當於給apache加入了解析php檔案的功能 cgi 不太了解 fastcgi 不太了解 get和post的區別 get 把引數放在url中,有長度限制。post 請求的資料理論上沒有長度限制。在htt...

知識儲備 Android ADB介紹

android adb總體概述 adb android debug bridge,位於 sdk plaform tools目錄下,path環境變數中要配置這一路徑的原因主要是要用到adb 是android sdk中的乙個除錯工具,利用adb這個除錯工具可以直接操作管理android模擬器或者真實的a...

框架儲備知識1

一 mvc與三層架構 1.三層架構 a ui層 介面層 直接與使用者互動的層 簡單介面邏輯在此層處理 業務 相關邏輯向下呼叫service層 b service層 業務層 與資料操作無關的業務,完全在此層處理 與數 據操作相關的業務 混合業務,需向下呼叫dao層 c dao層 資料層 運算元據庫,將...