JavaScript中的this只有如下几种情况,并按他们的优先级从低到高划分如下:
独立函数调用,例如
getUserInfo(),此时this指向全局对象window
对象调用,例如
stu.getStudentName(),此时this指向调用的对象stu
call()、apply()和bind()改变上下文的方法,this指向取决于这些方法的第一个参数,当第一个参数为null时,this指向全局对象window
箭头函数没有
this,箭头函数里面的this只取决于包裹箭头函数的第一个普通函数的this
new构造函数调用,this永远指向构造函数返回的实例上,优先级最高。
var name = 'global name';
var foo = function() {
console.log(this.name);
}
var Person = function(name) {
this.name = name;
}
Person.prototype.getName = function() {
console.log(this.name);
}
var obj = {
name: 'obj name',
foo: foo
}
var obj1 = {
name: 'obj1 name'
}
// 独立函数调用,输出:global name
foo();
// 对象调用,输出:obj name
obj.foo();
// apply(),输出:obj1 name
obj.foo.apply(obj1);
// new 构造函数调用,输出:p1 name
var p1 = new Person('p1 name');
p1.getName();
this解析流程图
如若转载,请注明出处:开源字节 sourcebyte.cn/article/134…