this 关键字指向问题
2018-01-21 本文已影响11人
FConfidence
this关键字
js中
this
代表的是当前行为执行的主体, js中context代表的就是当前行为执行的环境
this是谁和函数在哪儿定义的以及在哪儿执行的都没有或任何关系, 只和执行主体有关
- 函数执行, 首先看函数前面是否有".", 前面是谁, this就是谁, 没有的话指向全局对象global
- 自执行函数中的this,永远是window
- 给元素的某一个事件绑定方法, 当事件触发的时候, 执行对应的方法, 方法中的this是当前元素
// 第一种情况 function fn() { console.log(this) } var obj = {fn:fn} fn(); // window obj.fn(); // // obj function sum() { fn() } sum() // window // 第二种情况 var oo = { sum: function() { console.log('this in sum', this) fn(); } } oo.sum(); // this in sum=oo, window // 第三种情况 fn中的this指的是当前点击Node对象 document.getElementById('#div').onclick = fn; document.getElementById('#div').onclick = function() { console.log(this); // 这个this指的是 当前div Node对象 // 自执行函数 fn(); // fn中的this指的是window } // 第四种情况: 在构造函数当中(类), 出现的this.property = property 这里的this指的是当前类的实例 function Person(name) { this.name = name; } var p1 = new Person('ffff') // 创建p1的时候 this指p1 var p2 = new Person('dddd') // 创建p2的时候 this指p2