zoukankan      html  css  js  c++  java
  • this

    一、函数中的this

    在一个函数上下文中,this由调用者提供,由调用函数的方式来决定。如果调用者函数,被某一个对象所拥有,那么该函数在调用时,内部的this指向该对象。如果函数独立调用,那么该函数内部的this,则指向undefined。但是在非严格模式中,当this指向undefined时,它会被自动指向全局对象。
     
    二、
    这里我们需要明确的一点是,单独的{}是不会形成新的作用域的,因此这里的this.a,由于并没有作用域的限制,所以它仍然处于全局作用域之中。所以这里的this其实是指向的window对象。
    var a = 20;
    var obj = {
        a: 10,
        c: this.a + 20,  // 单独的{}是不会形成新的作用域的
        fn: function () {
            return this.a;
        }
    }
    
    console.log(obj.c); // 40
    console.log(obj.fn());  // 10
    'use strict';
    var a = 20;
    function foo () {
        var a = 1;
        var obj = {
            a: 10,
            c: this.a + 20,
            fn: function () {
                return this.a;
            }
        }
        return obj.c;
    
    }
    console.log(foo());    // Uncaught TypeError: Cannot read property 'a' of undefined
    console.log(window.foo());  // 40
    var a = 20;
    var foo = {
        a: 10,
        getA: function () {
            return this.a;
        }
    }
    console.log(foo.getA()); // 10  他不是独立调用,被对象foo所拥有
    
    var test = foo.getA;
    console.log(test());  // 20   test()作为调用者
    function foo() {
        console.log(this.a)
    }
    
    function active(fn) {
        fn(); // 真实调用者,为独立调用
    }
    
    var a = 20;
    var obj = {
        a: 10,
        getA: foo
    }
    
    active(obj.getA);  // 20

     箭头函数不会创建自己的this,它使用封闭执行上下文的this值

    箭头函数 使用bind  apply call 不起作用

  • 相关阅读:
    python限定方法参数类型、返回值类型、变量类型等
    双拼自然码
    关于将汉语拼音字母“ü”改成“v”的设想和建议
    数据库转模型图
    python中的捕获异常、异常跟踪
    内部教师爆料:某些民办学校真正的内幕
    炸薯条
    IntelliJ IDEA添加JavaDOC注释 方法 快捷键
    java获取当前路径的方法
    java获取全部子类或接口的全部实现
  • 原文地址:https://www.cnblogs.com/shangyueyue/p/10608404.html
Copyright © 2011-2022 走看看