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

2021-10-24 06:28:52 字數 1749 閱讀 8744

call()方法呼叫乙個物件。簡單理解為呼叫函式的方式,但是它可以改變函式的 this 指向

應用場景: 經常做繼承.

//1. call 可以呼叫函式 也可以改變函式內的this 指向

// 2.call 的主要作用可以實現繼承

var o =

function

fn(a, b);fn

()// 此時的this指向的是window

fn.call

(o,1,2

)//此時的this指向的是物件o,引數使用逗號隔開

// 實現繼承

function

father

(uname, age, ***)

function

son(uname, age, ***)

var son =

newson

('劉德華',18

,'男');

console.

log(son)

;

// 1. 呼叫函式, 也可以改變函式內部的this指向

// 2. 但是他的引數必須是陣列(偽陣列)

var o =

function

fn(a, b);fn

()// 此時的this指向的是window

fn.(o,[1

,2])

//此時的this指向的是物件o,引數使用陣列傳遞

var arr =[1

,66,3

,99,4

];var arr1 =

['red'

,'pink'];

// 改變函式指向 使其指向math

var big = math.max.

(math, arr)

;//99

var little = math.min.

(math, arr)

;//1

console.

log(big, little)

;//返回陣列最大值或最小值

function

num(arr, flag)

let max =

num(arr,

true

)let min =

num(arr,

false

) console.

log(

'max:'

+max+

'min:'

+min)

;//max:99min:1

bind() 方法不會呼叫函式,但是能改變函式內部this 指向,返回的是原函式改變this之後產生的新函式

如果只是想改變 this 指向,並且不想呼叫這個函式的時候,可以使用bind

應用場景:不呼叫函式,但是還想改變this指向

// 1. 不會呼叫原來的函式   可以改變原來函式內部的this 指向

// 2. 返回的是原函式改變this之後產生的新函式

// 3. 如果有的函式我們不需要立即呼叫,但是又想改變這個函式內部的this指向此時用bind

var o =

;function

fn(a, b)

;var f = fn.

bind

(o,1,2

);//此處的f是bind返回的新函式f(

);//呼叫新函式 this指向的是物件o 引數使用逗號隔開

改變this指向的三個方法

定義乙個函式實現兩個數相加 function demo a,b 改變this指向 第乙個引數是你指定的this var result demo.call 1,2 console.log result 返回值是上面函式定義的返回值 且使用call的同時 call執行函式 call方法有兩個作用 1改變...

改變函式內部 this 指向

var o function fn a,b fn.call o,1,2 var arr 1 66,3 99,4 var max math.max.math,arr var min math.min.math,arr console.log max,min bind 方法 bind 方法不會呼叫函式。...

js中改變函式內部this指向的方法

1 call 方法呼叫乙個物件。簡單理解為呼叫函式的方式,但是它可以改變函式的 this 指向 一般應用於繼承 var o function fn a,b fn 此時的this指向的是window fn.call o,1,2 此時的this指向的是物件o,引數使用逗號隔開 經常用域陣列中 var o...