改變this指向的三個方法

2021-10-24 04:33:17 字數 1086 閱讀 5264

//定義乙個函式實現兩個數相加

function

demo

(a, b)

//改變this指向 第乙個引數是你指定的this

var result = demo.

call(,

1,2)

; console.

log(result)

;//返回值是上面函式定義的返回值 且使用call的同時 call執行函式

//call方法有兩個作用 1改變this指向(第乙個引數) 2傳遞原函式所需的引數(剩餘引數) 以逗號的格式分隔

//改變this指向 第乙個引數是你指定的this 第二個引數是陣列 陣列裡面是傳遞的引數

var result1 = demo.(,

[2,3

]); console.

log(result1)

;//呼叫的時候不執行原函式

var demo1 = demo.

bind(,

5,9)

demo()

;//呼叫demo時發現this並沒有改變 說明bind沒有改變原函式中的this

//因為bind是返回了乙個新的函式

demo1()

;var result2 =

demo1(2

,3);

console.

log(result2)

;//總結 bind有兩個作用:1返回乙個新的函式 改變這個新函式中的this 2預傳引數

//預傳引數之後 就算呼叫的時候有傳遞新的引數 也會以之前預傳的引數為準

//求乙個陣列中的最大值

var arr =[1

,44,-

9,5,

26,233,54,

99];

let max = math.max.(""

, arr)

console.

log(max)

;//求乙個陣列中的最小值

let min = math.min.(""

, arr)

console.

log(min)

;

改變函式內部this指向的三個方法

call 方法呼叫乙個物件。簡單理解為呼叫函式的方式,但是它可以改變函式的 this 指向 應用場景 經常做繼承.1.call 可以呼叫函式 也可以改變函式內的this 指向 2.call 的主要作用可以實現繼承 var o function fn a,b fn 此時的this指向的是window ...

面試必備 更改this指向的三個方法

1.new關鍵字 用變數a建立了乙個fn的例項 相當於複製了乙份fn到物件a裡面 此時僅僅只是建立,並沒有執行,而呼叫這個函式fn的是物件a,那麼this指向的自然是物件a,那麼為什麼物件a中會有user,因為你已經複製了乙份fn函式到物件a中,用了new關鍵字就等同於複製了乙份 2.call ca...

this指向及改變this指向的方法

一 函式的呼叫方式決定了 this 的指向不同,但總的原則,this指的是呼叫函式的那個物件 1.普通函式呼叫,此時 this 指向 全域性物件window function fn fn 此處預設省略window 2.在嚴格模式下 use strict 為undefined.function foo...