关键字this、new;apply、call、bind方法的用法

一、this

  1. 定义

  引用MDN的说法:当使用在函数中时,this指代当前对象,即调用了函数的对象。如果在一个对象上使用了点或者方括号来访问属性或者方法,这个对象就成了this。如果访问属性或者方法时,没有使用点或者方括号,那this将指向全局对象。

  2. 例子

  function Person (name, sex) {

    this.name = name

    this.sex = sex

    this.eating = function (food = '土豆红烧肉', drink = '奶茶') {

      return this.name + ',快来吃饭了!我们吃' + food + ',还有饮料: ' + drink

    }

  }

  const xiaoMing = new Person('xiao ming', '男')

  const eating = xiaoMing.eating

  const xiaoHong = new Person('xiao hong', '女')

  const eating2 = xiaoHong.eating

  xiaoMing.eating()// xiao ming,快来吃饭了!我们吃土豆红烧肉,还有饮料: 奶茶

  eating()//undefined,快来吃饭了!我们吃土豆红烧肉,还有饮料: 奶茶

  xiaoHong.eating()// xiao ming,快来吃饭了!我们吃土豆红烧肉,还有饮料: 奶茶

  eating2()//undefined,快来吃饭了!我们吃土豆红烧肉,还有饮料: 奶茶

  xiaoMing.name// xiao ming

  xiaoHong.name// xiao hong

  name// undefined

二、new (创建一个新的对象)

三、apply、call、bind都是用来改变this的指向的,第一个参数都是this指代的对象,apply的参数传的是数组,call跟bind的参数是用逗号分隔的,bind返回的是一个新的函数,必须执行它,才跟前两者调用结果一致。

  基于上面的例子执行以下代码

  xiaoMing.eating.apply({name: '小芳'}, ['辣椒炒肉', '果汁'])// 小芳,快来吃饭了!我们吃辣椒炒肉,还有饮料: 果汁

  xiaoMing.eating.call({name: '小芳'}, '辣椒炒肉', '果汁')// 小芳,快来吃饭了!我们吃辣椒炒肉,还有饮料: 果汁

  xiaoMing.eating.bind({name: '小芳'}, ['辣椒炒肉', '果汁'])()// 小芳,快来吃饭了!我们吃辣椒炒肉,还有饮料: 果汁

  

转载于:https://www.cnblogs.com/shulan-hu/p/11473907.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值