关键字thisnew;applycallbind方法的用法
Posted shulan-hu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关键字thisnew;applycallbind方法的用法相关的知识,希望对你有一定的参考价值。
一、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: ‘小芳‘, [‘辣椒炒肉‘, ‘果汁‘])()// 小芳,快来吃饭了!我们吃辣椒炒肉,还有饮料: 果汁
以上是关于关键字thisnew;applycallbind方法的用法的主要内容,如果未能解决你的问题,请参考以下文章