JavaScript this全解析

129 阅读1分钟

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…