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...