最近在學(xué)js
皮获,了解到js
函數(shù)的重要性锰扶,因此做一個(gè)總結(jié)。
1.js
函數(shù)申明方式
1.直接申明
function fn(){
console.log(1)
}
fn()
2.定義變量來申明
var fn = function(){
console.log(1)
}
fn()
注意:上面兩種申明的差異蠢莺,js在執(zhí)行時(shí),會(huì)先把所有申明變量和函數(shù)提前零如,上面第二種方式來申明的函數(shù)躏将,只是變量提前,函數(shù)申明沒有提前考蕾。
3.構(gòu)造函數(shù)申明
var fn = new Function()
fn()
1.js
函數(shù)調(diào)用方式和內(nèi)部this
的指向
1.普通調(diào)用
function fn(){
console.log(1)
}
fn()
此處this
指向window
對(duì)象
2.方法調(diào)用
var obj={
fn:function(){
console.log(1);
}
}
obj.fn()
此處this
指向obj
對(duì)象
3.作為構(gòu)造函數(shù)調(diào)用
var fn = new Function()
fn()
此處this
指向構(gòu)造函數(shù)創(chuàng)建的對(duì)象
4.作為時(shí)間調(diào)用
假設(shè)有一個(gè)按鈕點(diǎn)擊事件
btn.onclick=function(){
console.log(this)
}
此處this
指向觸發(fā)該事件的對(duì)象
5.作為定時(shí)器調(diào)用
setTimeout(function(){
console.log(this)
},1000)
此處this
指向window
對(duì)象祸憋,因?yàn)槭?code>window在調(diào)用這個(gè)函數(shù)
總結(jié):函數(shù)this
指向的特點(diǎn)
函數(shù)內(nèi)部this
由函數(shù)調(diào)用時(shí)來確定。
下面有兩道比較經(jīng)典的例題供參考:
1.
function fn(){
console.log(this)
}
var obj={
fn:fn
}
obj.fn()
此題this
指向的是obj
對(duì)象肖卧,因?yàn)槭?code>obj在調(diào)用這個(gè)函數(shù)
2.
var obj={
fn:function fn(){
console.log(this)
}
}
var fn = obj.fn(;
fn()
此處this
指向window
對(duì)象