zoukankan      html  css  js  c++  java
  • 十分有趣的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实例化一个对象;
  • 相关阅读:
    3.List.Set
    2.Collection.泛型
    1.Object类.常用API
    MySQL-核心技术
    奇异的家族-动态规划
    动态规划-等和的分隔子集
    跳跃游戏-贪心
    跳跃游戏2
    爬楼梯
    组合博弈1536-S-Nim
  • 原文地址:https://www.cnblogs.com/xuemingyao/p/9698337.html
Copyright © 2011-2022 走看看