apply方法自解

前面有提到this作用域的问题,大概三种情况

1、全局环境中为global对象,浏览器中时为window对象

2、函数内部是,如无显示对象调用(a.b()),则为window对象,否则代表调用者a

3、new运算符调用,this指向构造函数创建出来的对象

上述第二种情况可以使用apply改变this的值,以此来扩展方法的作用域

ame = 'Sjg';
h = 100;
var logg = function() {
     console.log(this);
};
var foo = {
     name: 'xiex',
     h: 180,
     logg: function() {
         console.log(this);
     }
};
var printer = function() {
     this.logg();
     console.log('name' + this.name + ';' + 'height:' + this.h)
}
printer();
printer.apply(window);
printer.apply(foo);

image

原文地址:https://www.cnblogs.com/Shjergsen/p/7115596.html