随笔分类 -  读书笔记

摘要:构造函数覆盖模式,使用new操作符调用该函数的行为就如以函数调用它的行为一样。这能工作完全利益于js允许new表达式的结果可以被构造函数中的显式return语句所覆盖。当User函数返回self对象时,new表达式的结果就变为self对象。该self对象可能是另一个绑定到this的对象。 防范误用构造函数可能并不是太值得去做,尤其是当仅仅是局部使用构造函数时。但是理解如果以错误的方式调用构造函数会造成严重后果很重要。至少文档化构造函数期望使用new操作符调用是很重要的,尤其是在跨大型代码库中其享构造函数或该构造函数来自一个共享库时。 阅读全文
posted @ 2016-06-14 10:22 脚后跟着猫 阅读(507) 评论(0) 推荐(1)
摘要:__proto__属性很特殊,它提供了Object.getPrototypeOf方法所不具备的额外能力,即修改对象原型链接的能力。 避免修改__proto__属性的最明显的原因是可移植性的问题。并不是所有的平台都支持修改对象原型的特性,所以无法编写可移植的代码。 避免修改__proto__属性的另一 阅读全文
posted @ 2016-06-14 10:22 脚后跟着猫 阅读(1238) 评论(0) 推荐(0)
摘要: ES5引入Object.getPrototypeOf函数作为获取对象原型的标准API,但由于之前的很多js引擎使用了一个特殊的__proto__属性来达到相同的目的。但有些浏览器并不支持这个__proto__属性,所以并不是完全兼容的。例如对于拥有null原型的对象,不同的环境结果就不同了。 阅读全文
posted @ 2016-06-13 14:11 脚后跟着猫 阅读(1256) 评论(0) 推荐(0)
摘要:原型包括三个独立但相关的访问器。这三个单词都是对单词prototype做了一些变化。 C.prototype用于建立由new C()创建的对象的原型 Object.getPrototypeOf(obj)是ES5中用来获取obj对象的原型对象的标准方法 obj.__proto__是获取obj对象的原型对象的非标准方法假设User构造函数需要通过new操作符来调用。它需要两个参数,即姓名和密码的哈希值,并将它们存储在创建的对象中。 阅读全文
posted @ 2016-06-13 12:31 脚后跟着猫 阅读(1465) 评论(0) 推荐(3)
摘要:但不会深究的知识点,分开细化地讲解了。里面很多内容在高3等基础内容里,也有很多讲到。但由于本身书籍的篇幅较大,很容易忽视对应的小知识点。这章里的许多小提示都很有帮助,特别是在看对应内容的时候,把高3等工具书籍放在一边,边查边看收获很大。这章重点围绕函数的相关属性,方法,参数,关键字,命名,柯里化,高阶,闭包等内容作了各种提示。下面只是个人对于各条内容的一些总结,知识面有限,如有不对请大家一定指出。 阅读全文
posted @ 2016-06-12 15:23 脚后跟着猫 阅读(716) 评论(4) 推荐(2)
摘要:许多js环境都提供检查调用栈的功能。调用栈是指当前正在执行的活动函数链。在某些旧的宿主环境中,每个arguments对象含有两个额外的属性:arguments.callee和arguments.caller。前者指向使用该arguments对象被调用的函数。后者指向调用该arguments对象被调用 阅读全文
posted @ 2016-06-08 17:41 脚后跟着猫 阅读(747) 评论(0) 推荐(0)
摘要:js函数有一个非凡的特性,即将其源代码重现为字符串的能力。 反射获取函数源代码的功能很强大,使用函数对象的toString方法有严重的局限性。toString方法的局限性ECMAScript标准对函数对象的toString方法的返回结果(即该字符串)并没有任何要求。这意味着不同的js引擎将产生不同的 阅读全文
posted @ 2016-06-07 17:52 脚后跟着猫 阅读(921) 评论(0) 推荐(0)
摘要:函数是一种将代码作为数据结构存储的便利方式,代码之后可以被执行。这使得富有表现力的高阶函数抽象如map和forEach成为可能。它也是js异步I/O方法的核心。与此同时,也可以将代码表示为字符串的形式传递给eval函数以达到同样的功能。 程序员面临一个选择:应该将代码表示为函数还是字符串? 毫无疑问,应该将代码表示为函数。字符串表示代码不够灵活的一个重要原因是:它们不是闭包。 阅读全文
posted @ 2016-06-06 17:56 脚后跟着猫 阅读(716) 评论(0) 推荐(0)
摘要:将函数与其参数的一个子集绑定的技术称为函数柯里化(curring),以逻辑学家Haskell curry的名字命名。 比起显式的封闭函数,函数柯里化是一种简洁的、使用更少引用来实现函数委托的技术。bind方法提供了一种更简单的实现,结构更简单,但对于不了解bind方法的人理解起来可能有一点难度。 阅读全文
posted @ 2016-06-06 11:00 脚后跟着猫 阅读(777) 评论(0) 推荐(0)
摘要: js里方法和属性值为函数,就像一个东西两种称呼一个样,比如土豆,也叫马铃薯,一个样。既然一样,那就可以对对象的方法提取出来为函数,然后把提取出来的函数作为回调函数直接传递给高阶函数。 高阶函数是什么 玩过套娃娃游戏没,没玩过,没事,我也没玩过。大致就是下面这个样子呃,好吧,这才是真正的。就是多层函数 阅读全文
posted @ 2016-06-03 18:38 脚后跟着猫 阅读(588) 评论(0) 推荐(0)
摘要:迭代器(iterator)是一个可以顺序存取数据集合的对象。其一个典型的API是next方法。该方法获得序列中的下一个值。 迭代器示例 测试代码好下: 初步编码 用上面的测试代码进行测试 错误分析 代码运行结果并不正确,下面就对初始的编码程序进行分析。 这里的指代错误,很像是另一个让人头痛的对象th 阅读全文
posted @ 2016-06-03 11:33 脚后跟着猫 阅读(561) 评论(0) 推荐(0)
摘要: arguments对象并不是标准的Array类型的实例。arguments对象不能直接调用Array方法。 arguments对象的救星call方法 使得arguments可以品尝到数组方法的美味,知道可以吃,下面就是怎么吃的问题了。不管怎么吃,先吃一口试试。 感觉很棒的样子,色香都具备了,拿筷子尝 阅读全文
posted @ 2016-06-02 09:53 脚后跟着猫 阅读(1613) 评论(2) 推荐(1)
摘要:第21条讲述使用可变参数的函数average。该函数可处理任意数量的参数并返回这些参数的平均值。 如何创建可变参数的函数 1、实现固定元数的函数 书上的版本 使用ES5 Array.reduce方法的版本 调用方法 averageOfArray函数定义了一个形参,即参数列表中的变量a。当调用函数av 阅读全文
posted @ 2016-06-01 14:51 脚后跟着猫 阅读(798) 评论(0) 推荐(0)
摘要:函数的apply()方法和call方法作用相同,区别在于接收的参数的方式不同。apply()方法接收两个参数,一个是对象,一个是参数数组。使用apply方法指定一个可计算的参数数组来调用可变参数的函数 使用apply方法的第一个参数给可变参数的方法提供一个接收者 阅读全文
posted @ 2016-05-31 11:49 脚后跟着猫 阅读(785) 评论(0) 推荐(2)
摘要:高阶函数介绍 高阶函数曾经是函数式编程的一个概念,感觉是很高深的术语。但开发简洁优雅的函数可以使代码更加简单明了。过去几年中脚本语言采用了这些个技术,揭开了函数式编程的最佳惯用法的神秘面纱。高阶函数就是将函数作为参数或返回值的函数。将函数做为参数(通常称为回调函数)是一种强大、富有表现力的惯用法,在 阅读全文
posted @ 2016-05-26 15:20 脚后跟着猫 阅读(762) 评论(0) 推荐(0)
摘要:面向对象编程中,函数、方法、类的构造函数是三种不同的概念。 JS中,它们只是单个构造对象的三种不同的使用模式。 三种不同的使用模式 函数调用 函数的表现与行为一致,调用hello函数并将给定的实参绑定到username形参。 方法调用 js中的方法,是指对象的属性恰好是函数而已。 这里方法hello 阅读全文
posted @ 2016-05-25 18:15 脚后跟着猫 阅读(775) 评论(1) 推荐(1)
摘要:前言 第二章主要讲解各种变量作用域,通过这章的学习,接触到了很多之前没有接触过的东西,比如不经常用到的eval,命名函数表达式,with语句块等,下面是一个列表,我对各节的一点点个人总结,很多都是自己的收获和认识。可能有很多认识的误区,毕竟水平有限。如果有那里认识不对的地方,还希望可以在评论中指出来 阅读全文
posted @ 2016-05-24 11:18 脚后跟着猫 阅读(578) 评论(0) 推荐(1)
摘要:eval函数不仅仅是一个函数。大多数函数只访问定义它们所在的作用域,而不能访问除此之外的作用域(词法作用域)。eval函数具有访问调用它时的整个作用域的能力。编译器编写者首次设法优化js时,eval函数很难高效地调用任何一个函数,因为一旦调用的函数是eval函数,那么每个函数调用都需要确保在运行时整 阅读全文
posted @ 2016-05-24 11:06 脚后跟着猫 阅读(766) 评论(0) 推荐(0)
摘要:js中的eval函数是一个强大、灵活的工具。强大的工具容易被滥用,所以了解是值得的。(本人只用过它来处理json数据)。 错误使用eval函数的方式一:允许它干扰作用域。 调用eval函数会将其参数作为js程序进行解释。 该程序运行于调用者的局部作用域中,嵌入到程序的全局变量会被创建为调用程序的局部变量。 阅读全文
posted @ 2016-05-24 10:35 脚后跟着猫 阅读(694) 评论(0) 推荐(0)
摘要:嵌套函数声明。没有标准的方法在局部块里声明函数,但可以在另一个函数的顶部嵌套函数声明。 如果我们把函数f移动到局部块里。 js没有块级作用域,所以内部函数f的作用域应该是整个test函数。下面的这个例子的合理猜测结果是["local","local"]和["local"]。事实上,一些js环境的确如 阅读全文
posted @ 2016-05-23 18:38 脚后跟着猫 阅读(322) 评论(0) 推荐(0)

返回
顶部