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实例化一个对象;
  • 相关阅读:
    [UE4]Visiblity、Render Opacity
    [UE4]Tool Tip
    [UE4]工程设置:自动捕获鼠标、通过代码设置鼠标显示隐藏、输入模式、编译时自动保存
    [UE4]蓝图节点的组织
    [UE4]宏
    [UE4]对象
    [UE4]传值与传引用
    [UE4]蓝图中的基本数据类型
    [UE4]位与字节
    [UE4]Delay与Retriggerable Delay
  • 原文地址:https://www.cnblogs.com/xuemingyao/p/9698337.html
Copyright © 2011-2022 走看看