关于this的指向
1.全局环境下的this始终指向全局对象 也就是 window;
2.在普通函数内部,this指向window;
3.在对象内部的this指向调用这些方法的对象;
4.构造函数内的this与被创建的对象绑定;
5.在定时器下 this指向window (除es6外);
apply() 与 call()
两种方法均是,调用一个对象的一个方法,并用另一个函数替换当前对象。
例:
B.apply(A,arguments);
B.call(A,args1,args2);
且他们的共同之处是
都“可以用来代替另一个对象调用一个方法,将一个函数的对象上下文从初始的上下文改变为由thisObj指定的新对象”。
不同之处在于两种方法的传参方式
刚刚在示范基本写法的时候其实已经见到了,
call() 是除去第一个外,剩余的以普通方式传参;
apply()是除去第一个, 剩余的以数组形式传参;
function luz (name,age){
this.name = name;
this.age = age;
this.abc = function(){
console.log(this);
}
}
function luz1 (name,age){
luz.call(this,name,age);
}
var dyz = new luz1("xx","18")
dyz.abc()
使用call()方法继承;
function Car(name){
this.name = name;
this.show = function(){
alert(this.name);
}
}
function Cat(name){
Car.apply(this,[name]);
}
var cat = new Cat("滴滴");
cat.show();
使用apply()方法继承