1.普通函数内部使用this,那么this指向window,在严格模式下,则指向undefined.
// 'use strict' //如果使用严格模式则this指向undefined
function getthis () {
console.log(this);//window
}
getthis();
2.如果在对象的方法内调用,则this指向该对象
var obj = {
get: function () {
console.log(this);//this指向对象本身
}
}
obj.get();
3.如果在构造函数内使用,只要创建了实例对象,new
会将this指向实例对象
function Job (type,name) {
this.type = type;
this.name = name;
this.action = function () {
console.log(this);//指向实例化对象
}
}
var myJob = new Job("development","mark");
myJob.action();
4.在事件函数中,this指向事件源
var btn = document.getElementById("btn");
btn.onclick = function () {
console.log(this);//指向事件源
}
5.函数使用call,apply,bind方法调用,使得this指向函数的第1个参数(常为对象).
function getthis() {
console.log(this); //指向了对象obj
}
var obj = {
name : "mark"
}
getthis.call(obj);
6.es6的箭头函数是没有this指向的,它的this指向继承自父级,所以它不能用作构造函数.