继承--call aplly bind方法
1.用途
1)apply call bind 都是用来改变this指向
2)apply 和 call会让当前函数执行,而bind会返回一个函数,后续需要的时候再调用执行
2.this指向问题
1)如果函数中的this没有调用对象,则this指向window(严格模式下,this为undefinded)
2)如果函数中this被不包含对象的对象调用,则this指向调用他的对象
3)如果函数中this被包含多级对象的对象调用,则this指向调用它的上一级对象
4)如果我们调用了对象,并将其赋值给某个变量,然后在需要的时候在去调用执行它,则此时this也是指向的window对象,
1)call详解
参数call(newThis,arg1,arg2....)args是将会传入被绑定函数的参数,被绑定函数执行时,参数的顺序为:newThis args 原参数
newThis包括以下类型:
(1)不传,或者传null undefined,函数中this指向window对象
(2)传递另一个函数的函数名,函数中的this指向这个函数的引用
(3)传递字符串,数值或者布尔类型等基础类型,函数中的this指向其对应的包装对象,如String Number Boolean等
(4)传递一个对象,函数中的this指向这个对象
call其实是apply的一个语法糖,他们的作用都是用于改变上下文的指向,去区别在于call接收多个参数,而apply接收一个数组
4.bind方法的返回值的函数
bind也是用于改变上下文的this的指向
bind()方法会创建一个新的函数,称为绑定函数,当调用这个绑定函数时,绑定函数会以创建它时传入bind()方法的第一个参数作为this,传入bind()方法的第二个及以后的参数,加上绑定函数运行时本身的参数按照顺序作为原函数的参数来调用原函数