php 改变this指向,改变this的指向

一、this

一般情况下,this是在运行时动态指定的,指向调用它的对象。

在箭头函数中,没有自己的this值,它的this值继承自父作用域,是词法作用域,在定义的时候就被指定了,之后也不变。

二、call、apply、bind的相同点

1、都是用来改变函数的this指向的,执行目标函数的时候把目标函数的this执向改一下,并不会改变原函数的指向

function fn() {

console.log(this);

}

var obj = {

a:[4,5,6],

b:[7,8],

};

fn.apply(obj); // {a: Array(3), b: Array(2)}

var f = new fn(); // { }

fn.call(obj); // {a: Array(3), b: Array(2)}

var f2 = new fn(); // { }

fn.bind(obj)(); // {a: Array(3), b: Array(2)}

var f3 = new fn(); // { }

2、第一个参数都是this要指向的对象

3、都可以利用后续参数传参

三、call、apply、bind的区别

1、call和apply都是对函数直接调用,而bind方法返回的是一个函数,还需要()来进行调用。

2、call是一个个的传参,apply是以数组的形式进行传参,bind也是一个个的传参。

fn.call(target_object,name1,name2)

fn.apply(target_object,[name1,name2])

fn.bind(target_object,name1,name2)()

fn.bind(targe_object)(name1,name2)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值