this
什么是this
- 任何函数实质上都是通过某个对象来调用的,如果没有间接指定就是window
- 所有函数外部都有一个变量this
- 它的值是调用函数的以后对象
如何确定this的值
- test():window
- p.test():p
- new test(): 新创建的对象
- p.call(obj):obj
function Person(color){ console.log(this) this.color = color; this.getColor = function(){ console.log(this) return this.color; }; this.setColor = function (color){ console.log(this) this.color = color };}Person("red"); //this是谁 windowvar p = new Person("yello"); //this是谁 pp.getColor(); //this是谁? pvar obj = {};p.setColor.call(obj,"black"); //this是谁? objvar test = p.setColor;test(); //this是谁 windowfunction fun1(){ function fun2(){ console.log(this); } fun2(); //this是谁? window}fun1();