apply和call方法
作用都可以改变this的指向
没有传参数
apply和call方法中如果没有传入参数,或者传入的是null,那么调用该方法的函数的this指向是默认的window
参数
f1.apply(null, [100,200]) 数组传入参数
f1.call(null,100,200) 一个个传入
f1.apply(对象, [100,200])那么f1中的原型指向变成了 传入的这个对像
f1.call(对象,100,200)
apply和call调用的话 如果 不是写在指向原型的函数里面 相当于一次调用
并没有真正的这个对像原型里继承
运用的地方
只要想使用别的对象的方法 或者属性 运用在自己生就可以 进行调用
apply和call实际上实在 Function里面
bind方法
改变this指向
参数中没有传入对象或者null
此时的this指向默认是window
var ff = f1.bind(10, 20);
将f1复制了一份给 ff
参数可以在复制的时候传入 也可以在复制之后传
有传入对象
此时 就相当于 将f1复制一份 原型指向 per这个原型
此时 ff 就可以调用f1的属性和方法 也可以调用 per里面的属性和方法了
var ff = f1.bind(per, 10, 20);
此时只能拿到属性 不能得到方法 f1是函数
var per = new Person(10);
var stu = new Student(20);
//复制了一份
var ff1 = per.play.bind(stu);
ff1();
上面这种方式 意思就是 将per.play复制了一份 然后指向是stu
此时的参数是stu的参数为准
per.play.bind(stu)bind后面还有没有参数 是看per.play有没有参数
还有一点就是复制完 只是在 per.play这个方法里获取到stu里的参数
stu里面的参数 在 new里面进行传入
目前的调用方式
实例对象的方法 调用实例对象
函数 调用实例对象
bind的应用
parseInt()
是向