-
apply耸袜、call 有什么作用盏求,什么區(qū)別
- 兩者都是為了改變函數(shù)體內(nèi)的this指向。
- 它們的不同之處是:apply接收參數(shù)數(shù)組框产,call接收接收參數(shù)列表贰逾。
apply語法:fun.apply(thisObj悬荣,[arr1,arr2疙剑,arr3])
call語法:fun.call(thisObj氯迂,Object)
通俗點說:就是執(zhí)行一個函數(shù)践叠,然后把this和參數(shù)傳進(jìn)去。fun.call(this,參數(shù)1嚼蚀,參數(shù)2禁灼,參數(shù)...)
-
以下代碼輸出什么?
var john = {
firstName: "John"
}
function func() {
alert(this.firstName + ": hi!")
}
john.sayHi = func
john.sayHi()
輸出 john:hi轿曙!
-
下面代碼輸出什么弄捕,為什么
func()
function func() {
alert(this)
}
輸出:window 因為是window調(diào)用的func函數(shù)
-
下面代碼輸出什么
function fn0(){
function fn(){
console.log(this);
}
fn();
}
fn0();
document.addEventListener('click', function(e){
console.log(this);
setTimeout(function(){
console.log(this);
}, 200);
}, false);
輸出 window document window
-
下面代碼輸出什么,why
var john = {
firstName: "John"
}
function func() {
alert( this.firstName )
}
func.call(john)
輸出 john 因為利用了call this變成了john
-
代碼輸出导帝?
var john = {
firstName: "John",
surname: "Smith"
}
function func(a, b) {
alert( this[a] + ' ' + this[b] )
}
func.call(john, 'firstName', 'surname')
輸出 john smith
-
以下代碼有什么問題守谓,如何修改
var module= {
// var me = this; //修改
bind: function(){
$btn.on('click', function(){
console.log(this) //this指什么 $btn
//me.showMsg();
})
},
showMsg: function(){
console.log('ahong');
}
}