如果沒有綁定this的話,下面的this指的是 window 物件
function aa(){
console.log(this);
console.log(this.name);
}
aa();
//Window {0: Window, window: Window, self: Window, document: document, name: '', location: //Location, …}
那麼現在來介紹能指定綁定this 的三個方法吧!
function aa(){
console.log(this);
console.log(this.name);
}
let st={
name:'Ivy',
age:20
}
//注意,ff是函數
let ff=aa.bind(st);
ff();
//{name: 'Ivy', age: 20}
//Ivy
**如果此函數有其他參數就寫在call的物件後面
function aa(good){
console.log(this);
console.log(this.name);
console.log(good);
}
let st={
name:'Ivy',
age:20}
aa.call(st,'444666');
//{name: 'Ivy', age: 20}
//Ivy
//444666
function aa(good,jj){
console.log(this);
console.log(this.name);
console.log(good);
console.log(jj);
}
let st={
name:'Ivy',
age:20}
// 要傳入的參數用陣列包起來,放在要apply的物件後面
aa.apply(st,['444666',1111111]);
//{name: 'Ivy', age: 20}
// Ivy
// 444666
// 1111111
1.哪個方法的參數要用陣列包裝?
2.哪個方法綁定時是回傳函數?
參考資料:
Runoob.com JavaScript 中 call()、apply()、bind() 的用法
MDN Function.prototype.call