改变this指向:(继承构造函数原型对象中的方法,要放在所有原型对象方法的上面)
函数名.call( ); 第一个参数必须是指定的对象,方法的原参数,挨个放在后面。
函数名.apply( ); 第一个参数:传入该函数this执行的对象,传入什么强制指向什么,第二个参数开始:数组,把放原有的参数放在一个数组中。
函数名.bind( ); bind用法和call()一样,直接运行方法,但bind返回为新的方法,然后重新调用。
// 无参情况下call
function fun(){
console.log(this);
};
fun();
fun.call('call');
// 有参情况下call,
function fun1(a,b){
console.log(this);
};
fun1(2,3);
// call第二个参数开始:将原函数的参数往后顺延一位
fun1.call('call',2,3);
// apply第二个参数开始:数组,把放原有的参数放在一个数组中
fun1.apply('call',[2,3]);
// bind返回新的方法,然后需重新调用 (三种方法)
let c = fun1.bind('call',2,3);
c();
/* fun1.bind('call',2,3)(); */
/* fun1.bind('call')(2,3); */
构造函数与工厂函数:构造函数是系统自动生成对象,存储数值。工厂函数都是手动创建对象来