1.4 重要结论
通过刚才的第三种函数的声明方法,是个构造函数,我们会想到什么,为什么函数也有构造函数,难道函数也是对象吗?是的那我们接下来验证一下
<script>
var fn=new Function('a','b','console.log(a+b)')
fn(1,3)
console.dir(fn instanceof Object)
</script>
结论:
对此我们知道了函数也是对象就可以得到以下关系
- 函数属于对象
- 所有的函数都是Function构造函数的实例化对象
二:函数的调用
函数的调用分为以下六种情况:
- 普通函数调用
- 立即执行函数调用
- 对象内方法调用
- 构造函数调用
- 事件函数调用
- 定时器函数调用
2.1 普通函数调用
普通函数调用可以直接写函数名调用,也可以使用 call() 方法调用
<script>
function fn(){
console.log('我是一个普通函数的调用');
}
fn()
fn.call()
</script>
2.2 立即执行函数调用
立即执行函数通常用于匿名函数的调用,立即执行函数是自动调用的
<script>
(function(){
console.log('立即执行函数调用了');
})()
</script>
2.3 对象内方法调用
对象内方法调用只需要 :实例化对象名称.方法名称
<script>
var obj={
fn:function(){
console.log('对象内的方法调用了');
}
}
obj.fn()
</script>
2.4 构造函数调用
构造函数的调用只需要 new实例化对象就可调用
<script>
function Animal(){}
new Animal()
</script>
2.5 事件函数的调用
事件对象调用需要触发事件就可以调用
<script>
var div1=document.querySelector('div')
div1.addEventListener('click',function(){
console.log('事件对象调用了');
})
</script>
2.6 定时器函数的调用
定时器内的函数为时间到后自动调用
<script>
window.setInterval(function(){
console.log('定时器函数触发了');
},1000)
</script>
三:各类函数的内部this指向问题
函数内部的 this 指向谁,是由我们调用时才知道的,一般情况是指向函数的调用者,下面是上一板块出现的几类函数的this指向
函数类型 | this 的指向 |
普通函数调用 | window |
立即执行函数调用 | window |
对象内方法调用 | 该方法的所属对象 |
构造函数调用 | 通过构造函数创建的实例化对象 |
事件函数调用 | 绑定事件的对象 |
定时器函数调用 | window |
以上就是函数进阶第一板块的内容,创作不易,支持下吧!!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-q6wUyuDB-1714722919774)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!