JS面向对象编程之函数的高级用法(5)

1.函数的定义

1-1.自定义函数

function fn(){}

1-2.函数表达式(匿名函数)

var fn = function(){}

1-3.利用new Function(‘参数1’,‘参数2’,‘表达式’)

var fn = new Function('参数1','参数2','表达式')

2.函数的调用

2-1.普通函数的调用

fn()
fn.call()

2-2.对象的方法的调用

obj.fn()

2-3.构造函数的调用

new Fn

2-4.绑定事件函数的调用

点击按钮的时候

2-5.定时器函数的调用

setInterval(function(){},1000)
//隔一秒调用一次

2-6.立即执行函数的调用

(function(){
console.log('立即就调用了')
})

3.this

3-1.六种函数的this指向

请添加图片描述

3-2.改变函数内部的this指向

3-2-1.call()方法

  • 主要可以用来调用函数和改变函数内部this指向
  • 主要作用是可以用来继承
 var obj = {
            name:'lq'
        }
        function fn(){
            console.log(this);
        }
        fn.call()
        fn.call(obj)

请添加图片描述

3-2-2.apply()方法

  • 第一个参数是this指向的对象,第二个参数必须是一个数组或者伪数组
var obj = {
            name:'lq'
        }
        function fn(data){
            console.log(this,data);
        }
        fn.apply()
        // fn.apply(obj , '必须是一个数组')
        fn.apply(obj,['lq'])

请添加图片描述

3-2-3.bind()方法

  • bind()方法不可以调用函数,只能用来改变this指向
  • 从第二个参数开始可以传递多个参数
  • 返回由只当的this值 和初始化参数改造的原函数拷贝
  • 使用 bind后返回了一个拷贝的新函数,需要接受一下再调用
var obj = {
            name:'lq'
        }
        function fn(a,b){
            console.log(this);
            console.log(a+b);
        }
        var f = fn.bind(obj,1,2)//改变了this指向但是不会调用函数
        // 使用 bind后返回了一个拷贝的新函数,需要接受一下再调用
        f()//调用一下

请添加图片描述

3-3.总结

相同点:

  • 都可以改变函数的this指向

区别点:

  • call和apply都会调用函数,并且改变函数内部的this指向
  • call和apply传递的参数不一样,call传递参数是参数1参数2形式,apply必须是数组的形式
  • bind不会调用函数,可以改变函数内部的this指向

主要应用场景:

  • call经常用于继承
  • apply经常跟数组有关系,可以借助数学对象求最大值最小值等
  • bind不调用函数,但是项改变this指向,比如改变定时器内部的this指向

4.严格模式

  • 在js文件中输入以下代码就开启了严格模式
  • use strict
  • 严格模式下全局作用域中函数的this是undefined

5.高阶函数

  • 就是一个函数的参数部分可以接收一个函数作为回调,参数部分的函数称作回调函数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

忧郁火龙果

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值