zoukankan      html  css  js  c++  java
  • 《你不知道的JavaScript(上)》笔记——关于this

    this 指向函数的作用域是一种常见的误解,this 在任何情况下都不指向函数的词法作用域。 在 JavaScript 内部, 作用域确实和对象类似, 可见的标识符都是它的属性。 但是作用域“对象” 无法通过 JavaScript代码访问, 它存在于 JavaScript 引擎内部

    function foo() {
    	var a = 2;
    	this.bar(); // 调用 bar() 最自然的方法是省略前面的 this, 直接使用词法引用标识符。你不能使用 this 来引用一个词法作用域内部的东西。
    }
    
    function bar() {
    	console.log( this.a );
    }
    
    foo(); // ReferenceError: a is not defined
    

    每当你想要把 this 和词法作用域的查找混合使用时, 一定要提醒自己, 这是无法实现的。

    this 的绑定和函数声明的位置没有任何关系, 只取决于函数的调用方式。

    当一个函数被调用时, 会创建一个活动记录(有时候也称为执行上下文)。 这个记录会包含函数在哪里被调用(调用栈)、 函数的调用方法、 传入的参数等信息。 this 就是记录的其中一个属性, 会在函数执行的过程中用到。

  • 相关阅读:
    完全背包和多重背包的混合 F
    多重背包转化成完全背包 E
    I
    D. Beautiful Array DP
    B. Long Path dp
    C. Barcode dp
    dp D. Caesar's Legions
    docker-mysql
    日志级别facility
    实时同步lsyncd
  • 原文地址:https://www.cnblogs.com/simpul/p/11027206.html
Copyright © 2011-2022 走看看