apply,call,bind异同和state,props异同

一、call、apply和bind的区别:

相同点:改变this的指向

1、call和apply

作用(相同点):1、改变this指向。2、调用函数本身;3、第一个参数都是对象(this的指向)

不同点:

1)、apply只有两个参数,第二个参数是数组(可以接收父函数的arguments)

2)、call第二个参数朝后的所有参数是原函数的参数(把apply第二个参数展开)

2、bind:

作用:1、改变this指向(把函数和对象绑死),2、产生新的函数,新的函数里的this就是绑定对象。

call和apply:

var fn01 = function(){
    console.log("fn01的this",this); --this指向window
}

fn01();

let  obj1 = {
    id:"01001"
}

fn01.call(obj1);//调用fn01的同时,让fn01内部的this是obj1


let  obj2 = {
    id:"01002"
}

fn01.call(obj2);//调用fn01的同时,让fn01内部的this是obj2

(function(){
    console.log("匿名调用call时的this",this);--this指向的是obj1
}).call(obj1);
bind:

var fn02 = function(){
    console.log("fn02里的this",this);--this指向的是obj3
}

let obj3 = {
    id:"01003"
}

let obj4 = {
    id:"01004"
}

let newFn02 = fn02.bind(obj3);
newFn02();

let newFn03 = fn02.bind(obj4);

newFn03();
newFn03();

let obj5 = {
    id:"01005"
}

let newFn05 = (function(){
    console.log("匿名函数使用bind里的this",this);--this指向的是obj5
}).bind(obj5);

newFn05();

二、state和props的异同

相同:

1、都是组件的数据2、发生改变时,都会引起组件的更新。

不同:

1、state: 是组件的内部状态(数据),可以被修改,但是必须用setState修改,而且是异步的

2、props:是组件的属性,是从外部传入组件的数据,不能被修改。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值