最近在学js
,了解到js
函数的重要性,因此做一个总结。
1.js
函数申明方式
1.直接申明
function fn(){
console.log(1)
}
fn()
2.定义变量来申明
var fn = function(){
console.log(1)
}
fn()
注意:上面两种申明的差异,js在执行时,会先把所有申明变量和函数提前,上面第二种方式来申明的函数,只是变量提前,函数申明没有提前。
3.构造函数申明
var fn = new Function()
fn()
1.js
函数调用方式和内部this
的指向
1.普通调用
function fn(){
console.log(1)
}
fn()
此处this
指向window
对象
2.方法调用
var obj={
fn:function(){
console.log(1);
}
}
obj.fn()
此处this
指向obj
对象
3.作为构造函数调用
var fn = new Function()
fn()
此处this
指向构造函数创建的对象
4.作为时间调用
假设有一个按钮点击事件
btn.onclick=function(){
console.log(this)
}
此处this
指向触发该事件的对象
5.作为定时器调用
setTimeout(function(){
console.log(this)
},1000)
此处this
指向window
对象,因为是window
在调用这个函数
总结:函数this
指向的特点
函数内部this
由函数调用时来确定。
下面有两道比较经典的例题供参考:
1.
function fn(){
console.log(this)
}
var obj={
fn:fn
}
obj.fn()
此题this
指向的是obj
对象,因为是obj
在调用这个函数
2.
var obj={
fn:function fn(){
console.log(this)
}
}
var fn = obj.fn(;
fn()
此处this
指向window
对象