js this是什么?
1、this:指当前执行上下文的一个属性,在非严格模式下,总是指向一个对象,在严格模式下可以是任意值。
可以理解为:this 就是你call 一个函数时,传入的第一个参数,即谁调用了函数,this就指向谁。
2、函数调用转换:
func(p1, p2) 等价于 func.call(undefined, p1, p2) obj.child.method(p1, p2) 等价于 obj.child.method.call(obj.child, p1, p2)
3、关于箭头函数和this:箭头函数没有this,箭头函数的this即为外层作用域的this,依次往上找,直到找到this的定义为止~
4、例子
function Foo() { getName = function () { console.log(1) }; return this; } Foo.getName = function () { console.log(2) }; Foo.prototype.getName = function () { console.log(3) }; var getName = function () { console.log(4) }; function getName() { console.log(5) }; //以下分别输出什么? Foo.getName(); getName(); Foo().getName(); getName; new Foo.getName(); new Foo().getName(); new new Foo().getName()
输出结果:
Foo.getName();//2
getName();//4
Foo().getName();//1
getName;//f(){alert(1)}
new Foo.getName();//2
new Foo().getName();//3
new new Foo().getName()//3