黄子涵

摘要: 5.1 变量的声明 5.2 变量与引用 5.3 变量与属性 5.4 变量的查找 5.5 对变量是否存在的校验 5.6 对象的定义 5.7 对象的生成 5.8 属性的访问 5.9 作为关联数组的对象 5.10 属性的属性 5.11 垃圾回收 5.12 不可变对象 5.13 方法 5.14 引用 5.1 阅读全文
posted @ 2022-05-28 23:54 黄子涵 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 事实上,原型继承的内部执行方式是相当复杂的。如果只是希望能够使用原型继承,而没有弄清其用法的话,反而可能会导致混乱的局面。因此,首先仅说明一下其形式。按代码清单 5.9 中的类定义为模板,并以原型继承的方式改写,就能得到代码清单 5.11。 // 代码清单 5.9 // 相当于进行类定义 funct 阅读全文
posted @ 2022-05-28 23:33 黄子涵 阅读(26) 评论(0) 推荐(0) 编辑
摘要: 6.1 函数声明语句与匿名函数表达式 6.2 函数调用的分类 6.3 参数与局部变量 6.4 作用域 6.5 函数是一种对象 6.6 Function类 6.7 嵌套函数声明与闭包 6.8 回调函数设计模式 阅读全文
posted @ 2022-05-28 17:06 黄子涵 阅读(14) 评论(0) 推荐(0) 编辑
摘要: 作用域指的是名称(变量名与函数名)的有效范围。 在 JavaScript 中有以下两种作用域。 全局作用域 函数作用域 全局作用域是函数之外(最外层代码)的作用域。在函数之外进行声明的名称属于全局作用域。这些名称就是所谓的全局变量以及全局函数。 而在函数内进行声明的名称拥有的是函数作用域,它们仅在该 阅读全文
posted @ 2022-05-28 17:04 黄子涵 阅读(64) 评论(0) 推荐(0) 编辑
摘要: 可以通过函数声明语句与匿名函数表达式对函数进行声明。 阅读全文
posted @ 2022-05-28 16:59 黄子涵 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 6.3.1 arguments 对象 可以通过在函数内使用 arguments 对象来访问实参。使用方式如代码清单 6.1 所示。 代码清单 6.1 使用 arguments 对象的例子 function hzh1() { console.log(arguments.length); console 阅读全文
posted @ 2022-05-28 16:58 黄子涵 阅读(48) 评论(0) 推荐(0) 编辑
摘要: 表6.1 函数调用的分类 名称 说明 方法调用 通过接收方对象对函数进行调用(包括apply 与call 调用) 构造函数调用 通过new 表达式对函数进行调用 函数调用 以上两种方式之外的函数调用 将以方法调用的方式使用的函数称为方法,同理,将以构造函数调用方式使用的函数称为构造函数。 函数声明语 阅读全文
posted @ 2022-05-28 16:54 黄子涵 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 在 Function 对象中包含 apply 与 call 这两种方法,通过它们调用的函数的 this 引用,可以指向任意特定的对象。也就是说,可以理解为它们能够显式地指定接收方对象。 下面是一个使用了 apply 方法与 call 方法的例子。 // function hzh(a, b) { // 阅读全文
posted @ 2022-05-28 16:33 黄子涵 阅读(21) 评论(0) 推荐(0) 编辑
摘要: this 引用是一种在 JavaScript 的代码中随时都可以使用的只读变量。在 Java 或 C++ 中也有功能类似的 this 引用。在 Java 以及 C++ 中,this 应该被看作是隐式传递的参数,而在 JavaScript 中,this 引用可以在最外层代码(函数之外)使用,所以从直觉 阅读全文
posted @ 2022-05-28 13:13 黄子涵 阅读(23) 评论(0) 推荐(0) 编辑
摘要: 5.12.1 不可变对象的定义 所谓不可变对象,指的是在被生成之后状态不能再被改变的对象。由于对象的状态是由其各个属性的值所决定的,因此从形式上来说也是指无法改变属性的值的对象。也有观点认为,在对象引用了另一个对象的情况下,只有当那个被引用的对象也是不可变的时候,引用了它的对象才能被称为不可变对象。 阅读全文
posted @ 2022-05-28 10:42 黄子涵 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 在 JavaScript 的语言规范中并不存在方法这一概念。方便起见,我们将作为对象属性的函数称为方法。 var hzh = { name: "黄子涵", say: function() { console.log("黄子涵是帅哥!"); } } hzh.say(); [Running] node 阅读全文
posted @ 2022-05-28 10:12 黄子涵 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 不再使用的对象的内存将会自动回收,这种功能称作垃圾回收。所谓不再使用的对象,指的是没有被任何一个属性(变量)引用的对象。 由 JavaScript 有着客户端程序大多运行时间很短这一历史原因,因此与其他程序设计语言相比,开发者并不太关心对象的存在生命周期。如果整个程序的生命周期就很短,相对来说就没有 阅读全文
posted @ 2022-05-28 09:59 黄子涵 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 虽然说起来有些绕口,不过属性也是有其属性的。表 5.1 总结了 ECMAScript 第 5 版中定义了的属性 。 在 ECMAScript 中,属性值被定位为“值属性”这样一种属性。使用这一定义的话,属性就成为了名称(属性名)和多个属性的集合。 表 5.1 属性的属性 属性的属性名 含义 writ 阅读全文
posted @ 2022-05-28 09:52 黄子涵 阅读(24) 评论(0) 推荐(0) 编辑
摘要: JavaScript 的对象和 Java 的映射(Map)类似。 如果将 JavaScript 对象的属性名看作键,属性值看作值,我们会发现它与 Java 中的映射非常相似。JavaScript 的对象还具有 Java 的映射所不具备的附加功能(例如方法或原型继承等),但也可以不理会这些功能,直接将 阅读全文
posted @ 2022-05-28 09:51 黄子涵 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 生成的对象可以通过属性来访问。对于对象的引用可以使用点运算符(.)或中括号运算符([])来访问其属性。需要注意的是,在点运算符之后书写的属性名会被认为是标识符,而中括号运算符内的则是被转为字符串值的式子。请看下面的例子: var hzh1 = { x:3, y:4 }; console.log("输 阅读全文
posted @ 2022-05-28 09:50 黄子涵 阅读(51) 评论(0) 推荐(0) 编辑
摘要: 5.7.1 对象字面量 在 JavaScript 程序中,如果要使用对象,就需要首先生成该对象。其中一种方法是通过对象字面量来实现对象的生成。 下面列举了一些可以使用对象字面量的情况。请注意这里并没有作严格的分类。 作为 singleton 模式的用法。 作为多值数据的用法(函数的参数或返回值等)。 阅读全文
posted @ 2022-05-28 09:37 黄子涵 阅读(29) 评论(0) 推荐(0) 编辑
摘要: 5.6.1 抽象数据类型与面向对象 如果从形式上来定义 JavaScript 的对象,它就是一种属性的集合。所谓属性,即名称与值的配对。属性值可以被指定为任意类型的值,包括数组或其他的对象,都没有问题。 对于对象有一种很常见的定义,即它是一种数据和操作(子程序)的结合。这一定义可以理解为,将面向对象 阅读全文
posted @ 2022-05-28 09:35 黄子涵 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 从代码的角度来看,(作为右值)写出变量名以对该值进行获取的操作,或者写在赋值表达式左侧以作为赋值对象进行查询的操作,都被称为对变量名称的查找。 因此,在最外层代码中对变量名进行查找,就是查找全局对象的属性。这其实只是换了一种说法,在最外层代码中能够使用的变量与函数,只有全局变量与全局函数而已。至于对 阅读全文
posted @ 2022-05-28 09:34 黄子涵 阅读(72) 评论(0) 推荐(0) 编辑
摘要: 如果试图读取没有被声明的变量,则会引起 ReferenceError 异常,这是一种错误,必须对代码进行修正。避免 ReferenceError 异常的一种方法: var hzh1 = 1; var hzh1 = hzh1 || 7; var hzh2; var hzh2 = hzh2 || 2; 阅读全文
posted @ 2022-05-28 09:34 黄子涵 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 其实,在 JavaScript 中变量就是属性,两者何止是相似,本身就是同一个概念。 根据作用域的不同,变量可以被分为全局变量和局部变量(包括参数变量)。全局变量是在最外层代码中声明的变量。所谓最外层代码,指的是写在函数之外的代码。局部变量则是在函数内部声明的变量。全局变量和局部变量两者的本质都是属 阅读全文
posted @ 2022-05-28 09:30 黄子涵 阅读(64) 评论(0) 推荐(0) 编辑