• 关于this的问题


    链接:https://www.nowcoder.com/questionTerminal/ad1aab0fd50a4185ac1ae450096d9095
    来源:牛客网

    var myObject = {
        foo: "bar",
        func: function() {
            var self = this;
            console.log(this.foo);  
            console.log(self.foo);  
            (function() {
                console.log(this.foo);  
                console.log(self.foo);  
            }());
        }
    };
    myObject.func();
    依次输出  bar  bar  undefined bar
     
    理解关键:方法/函数是由谁(对象) 调用 的,方法/函数内部的 this 就指向谁(该对象);
     
    注意:被谁调用,不是处于谁的作用域,即使在作用域
     
    1、func是由myObject调用的,this指向 myObject。
    2、self指向myObject,相当于 myObject的this的副本。
    3、这个立即执行匿名函数表达式(IIFE)是由window调用的,this指向 window 。第三个是闭包,this指向window。
    4、IIFE的作用域处于myObject.func的作用域中,本作用域找不到self变量,沿着作用域链向上查找self变量,找到了指向 myObject对象的 self。

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    1.this总是指向调用它的那个对象,如果是立即执行函数或者setTimeOut()这样的全局(window)函数则this指向的是window对象即this为全局的this.x中的x为全局变量
    2.js的作用域链,如果本作用域着不到对象就向上一层找
    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    var color = "green";
    var test4399 = {
          color:"blue",
          getColor:function (){
                       var color = "red";
                       alert(this.color);
                }
       }
    var getColor = test4399.getColor;
    getColor();
    test4399.getColor();
    1.getColor()     var getColor = test4399.getColor;将test4399对象内部的getColor和全局作用域中的getColor指向同一个函数,相当于在全局作用域中定义了一个函数,即var getColor = function(){var color = "red";alert(this.color);};执行getColor()函数时this指向的window,因为window.color为green,所以弹出green
    2.test4399.getColor()   此时this指向的是test4399,test4399.color为blue,所以弹出blue
  • 相关阅读:
    简单使用GDB
    【老人孟岩经验谈】如何学习一本新的编程语言
    【做存档】如何争取到真正有用的人脉?
    回头来看C语言里的static
    Spring MVC 教程,快速入门,深入分析[1220]
    eclipse ibabis代码生成插件abator功能扩展
    在MyEclipse中配置Tomcat服务器
    将远程调试的控制台信息输出至Eclipse
    LOG4J.PROPERTIES配置详解
    java Map 怎么遍历
  • 原文地址:https://www.cnblogs.com/aixiuxiu/p/6543633.html
Copyright © 2020-2023  润新知