摘要:
5 原型 5.1 prototype 对象的内置属性,是对于其他对象的引用。几乎所有的对象在创建时prototype属性都会被赋予一个非空的值 5.1.1 Object.prototype 所有普通的prototype链都会指向内置的Object.prototype 5.1.2 属性设置和屏蔽 my 阅读全文
摘要:
4.混合对象”类“ 面向类的设计模式: 实例化、继承、多态 本章将介绍面向对象编程理论 4.1 类理论 4.1.1 封装 面向对象编程强调数据和操作数据的行为是关联的 因此好的设计是把数据以及它相关的行为打包(封装),这在正式的计算机科学中有时被称为数据结构 4.1.2 继承 4.1.3 多态 父类 阅读全文
摘要:
2.this全面解析 2.1 调用位置 调用位置就是函数在代码中被调用的位置 分析调用栈:当前位置的函数调用列表,就是调用栈。栈中的第二个元素,就是真正的调用位置 2.2 绑定规则 默认绑定 独立函数调用:应用了this的默认绑定(指向全局对象),严格模式下,全局对象无法使用默认绑定,绑定到unde 阅读全文
摘要:
3.对象 3.1 语法 对象定义方式: 1. 声明 var obj = { key: value; } 2. 构造形式 var obj = new Object(); obj.key = value; var obj = { key: value; } 2. 构造形式 var obj = new O 阅读全文
摘要:
1.关于this 1.1 为什么要用this this 提供了一种更优雅的方式来隐式“传递”一个对象的引用。可以将API变得更简洁并复用。 1.2 误解 1.指向自身 从对象内部引用自身,法一:需要通过一个指向函数对象的词法标识符(变量)来引用它。 function foo(){ foo.count 阅读全文
摘要:
1.动态作用域 动态作用域是javaScript另一个重要机制this的表亲。 词法作用域和动态作用域区别: 前者在写代码或者说定义时确定的 后者是在运行时确定的 function foo(){ console.log(a); //3 } function bar(){ var a = 3; foo 阅读全文
摘要:
5.作用域闭包 5.1 启示 function foo(){ var a = 2; function bar(){ console.log(a); } return bar; } var baz = foo(); baz(); // 2 闭包的效果 // 函数bar在定义时的词法作用域外被调用。闭包 阅读全文
摘要:
4.提升 4.1 先有鸡还是先有蛋 根据声明的位置和方式将变量分配给作用域。 a = 2; var a; console.log(a); // 2 console.log(a); // undefined var a = 2; a = 2; var a; console.log(a); // 2 c 阅读全文
摘要:
3.函数作用域和块作用域 3.1 函数中的作用域 JavaScript 具有基于函数的作用域。 函数作用域: 属于这个函数的全部变量走可以在整个函数的范围内使用及复用(嵌套的作用域也可以使用)。 3.2 隐藏内部实现 变量和函数被包裹在一个函数的作用域中,然后用这个作用域来隐藏变量和函数。所谓隐藏, 阅读全文
摘要:
2.词法作用域 2.1 词法阶段 词法作用域意味着作用域是由书写代码时函数声明的位置来决定的。 编译的词法分析阶段基本能够知道全部标识符在哪里以及是如何声明的, 从而能够预测在执行过程中如何对它们进行查找。 2.2 词法查找 作用域查找会在找到第一个匹配的标识符时停止。 在多层的嵌套作用域中可以定义 阅读全文