你不知道的JavaScript(上卷)的笔记(13)

>我来写笔记

按有用程度 按页码先后 最新笔记

  • primecancan

    primecancan

    《作用域和闭包》让我印象很深的观点是: 1,JavaScript并不是一种“解释执行”的语言,而是一门编译语言,JavaScript引擎在执行前就编译了代码。 2,模块的两个必要条件: 一、 必须有外部的封闭函数,该函数必须至少被调用一次(每次调用都会创建一个新的模块实例)。 二、封闭函数必须返回至少一个内部函数,这样内部函数才能在私有作用域中形成闭包,并且可以访问或者修改私有的状态。

    2017-12-19 14:59

  • 寻海

    寻海 (天涯就是天涯,怎么比邻!)

    // 我们创建了一个新的 Bar.prototype 对象并关联到 Foo.prototype Bar.prototype = Object.create( Foo.prototype ); 这句话和 Bar.prototype = Foo.prototype; 是不一样的,第二句话相当于是让Bar.prototype直接引用了Foo.prototype,这样修改Bar.prototype.myLable的时候也会对Foo.prototype造成修改。 Bar.prototype = new Foo(); 而这句代码确实创建了一个关联到Bar.prototype的新对象,但是他使用了Foo()的‘构造函数..

    2017-02-13 14:16

  • 寻海

    寻海 (天涯就是天涯,怎么比邻!)

    有一种常见的错误说法是“JavaScript 中万物皆是对象”,这显然是错误的。 原理是这样的,不同的对象在底层都表示为二进制,在 JavaScript 中二进制前三位都为 0 的话会被判断为 object 类型, null 的二进制表示是全 0,自然前三位也是 0,所以执行 typeof 时会返回“ object ”。 ------------------------------------ null 和 undefined 没有对应的构造形式,它们只有文字形式。相反, Date 只有构造,没有 文字形式。 ...

    2017-02-10 09:17

  • 寻海

    寻海 (天涯就是天涯,怎么比邻!)

    this既不指向函数自身,也不指向函数的词法作用域。this是在函数被调用时发生的绑定,它指向什么完全取决于函数在哪里被调用。 -- 学习了

    2017-02-09 08:59

  • 寻海

    寻海 (天涯就是天涯,怎么比邻!)

    function foo() { console.log(a); // 3(不是 2 !) } function bar() { var a = 3; foo(); } var a = 2; bar(); 这个输出是2啊,作者搞错了吧。局部变量怎么能覆盖全局变量呢?   (2回应)

    2017-02-08 08:59

  • rudy

    rudy

    function foo(){ var a = 2; this.bar(); } function bar(){ console.log(this.a); } foo();// ReferenceError: a is not defined; 在这里按照我自己的理解以及在浏览器上面的运行, foo();运行的值应该是undefined PS:this.bar() 相当于 window.bar(),而this.a 由于在bar作用域中无法找到a,故this.a == window.a; 因此a 为undefined

    2016-12-31 22:21

  • 子龙

    子龙

    /代码内容已省略/ 我在浏览器里运行会输出 undefined。与我理解的一样。然而书上却说会报错: ReferenceError: a is not defined. 然后在 node.js v4.0.0 环境下运行这段代码,是会报错但也不是 ReferenceError,而是TypeError: this.bar is not a function 怀疑是作者的错误。

    2016-03-17 23:06

  • 子龙

    子龙

    arguments.callee 已经被弃用,不应该再使用它。 原因的话,参考 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments/callee ,先做了一下描述: The 5th edition of ECMAScript (ES5) forbids use of arguments.callee() in strict mode. Avoid using arguments.callee() by either giving function expressions a name or use a function declaration where a function must cal...

    2016-03-17 22:47

  • ○

    对于默认的[[Get]]操作来说,如果无法在对象本身找到需要的属性,就会继续访问对象的[[Prototype]]链: /代码内容已省略/ writable:false 只读属性会阻止[[Prototype]]链下层隐式创建(屏蔽)同名属性。这个限制只存在于=赋值中,使用Object.defineProperty(..)并不会受到影响。 继承意味着复制操作,JavaScript(默认)并不会复制对象属性。相反,JavaScript会在两个对象之间创建一个关..

    2016-01-20 17:35

  • ○

    this既不指向函数自身也不指向函数的词法作用域 this的绑定和函数声明的位置没有任何关系,只取决于函数的调用方式。 当一个函数被调用时,会创建一个活动记录(有时候也称为执行上下文)。这个记录会包含函数在哪里被调用(调用栈)、函数的调用方法、传入的参数等信息。this就是记录的其中一个属性,会在函数执行的过程中用到。 JavaScript语言和宿主环境中许多新的内置函数,都提供了一个可选的参数,通常被称为“...

    2016-01-15 17:07

<前页 1 2 后页>

笔记是你写在书页留白边上的内容;是你阅读中的批注、摘抄及随感。

笔记必须是自己所写,不欢迎转载。摘抄原文的部分应该进行特殊标明。

你不知道的JavaScript(上卷)

>你不知道的JavaScript(上卷)