十分有趣的this指向题

  var num=5;//9 =>++this.num=>10
    var obj={
        num:3,
        fn:function() {
            num = 9;//window.num=9
            (function (num) {
                console.log("aa"+this.num);//aa9
                console.log(++this.num);//window.num+1=>10
                num++;//obj.num+1=>4
                console.log(num);//4
            })(this.num)
            console.log("bb"+this.num);//指向obj.num =>bb3
        }
    }
    obj.fn();
    console.log(num);//10
    console.log(window.num,obj.num); //10  3

你也可以变化不同的数字,去校验自己的思路,欢迎讨论。

 this关键字;在作用域下有特殊意义;
console.log(this);// 全局作用域下的this(对象空间地址)
1.全局下的this指向window;(this和window的空间地址一样)
2.自执行函数中的this永远指向window,自执行函数中的形参、实参指向widow;
3.看函数执行前有没有点,有点,前面是谁,this就指向谁;没有点,指向window;
4.给元素的事件行为绑定方法(函数),那么方法中的this指向当前被绑定的那个元素
5.回调函数中的this,指向window
6.构造函数中的this指向当前类的实例;
7.call 、apply、bind可以改变this关键字;使用es6的箭头函数;在函数内部使用that = this;new实例化一个对象;
posted @ 2018-09-25 10:42  雪明瑶  阅读(230)  评论(0编辑  收藏  举报