深入理解ES6读后感锦集
《深入理解ES6》是一本由【美】Nicholas C. Zakas著作,电子工业出版社出版的平装图书,本书定价:CNY 99.00,页数:2017-7-1,特精心从网络上整理的一些读者的读后感,希望对大家能有帮助。
《深入理解ES6》精选点评:
●看了前两章,受益匪浅! 在传递新知识的时候,还巩固了ES5 的知识
●很棒,看完对 Promise 和 OO继承 理解更进一步。
●比阮一峰那本好很多。
●Zakas的又一部杰作,他的作品最优秀的地方在于只是阐述,很少评价,这在帮助我们夯实基础时十分有意义,我也喜欢这种风格。我是中英文参照阅读的,译本后半部分有一些文字上的纰漏,但是总体来说忠实原文,水平还是相当不错,希望再版时可以修复这些文字问题。
●深入学习es6,为后续学习vue.js做准备。
●最近看过的最好的一本关于js的书
●算是原理讲得好的工具书吧,但评分太高了吧,难道js平均水平比较低?
●ES6的入门书籍 比阮老师的内容更丰富一些,不过对于入过门的,还是觉得 MDN 足够,最多就当查漏补缺吧。
●Nicholas Zakas不愧是Javascript语言的顶级专家,对原理的透析和解读令人激赏、赞叹。《深入理解ES6》这本书的示例,条理清晰、层次分明,经过作者层层递进地阐释,似乎每个概念都自成体系,极易理解,值得反复阅读、学习、思考、钻研。没有深厚的功底,很难做到这一点,作者确实牛逼!
●查漏补缺
《深入理解ES6》读后感(一):看完第一章,忍住不来豆瓣写第一次书评。
今天上午到的。第一章看完了,其他地方也翻了翻。总体来说,翻译很棒,就像是国人写的。而且本书最大的优点是排版和字体。这本书是我买过那么多书以来,字体最好看,排版最好的一本没有之一。 说了些外表,说一下内容吧。 这本书说的比较细,在我看来是比阮老师写的好一点的。其中关于TDZ暂时性死区中,关于typeof的情况说的比阮老师好一些。不过不适合刚入js就看这本的。最好有点js基础再来看。
但是美中不足的是书最后《索引》,居然有十五页,有点多了。而且索引这块,字体有点混乱,有点宋体+微软雅黑的味道。一会宋体,一会雅黑。而且排版也有点差强人意。而且部分索引好像是错的,我试了一些,有几个索引的内容不对。
还有一个缺憾是没有介绍async/await,不过可以去阮老师那里看。 因为只看了一章还没有看完,没有办法给出比较全面的评价。不过就我而言,这本书除了最后的索引有点差强人意,没有介绍async/await。其他地方真的是很棒。入手绝对不亏。因为写的是真好。
《深入理解ES6》读后感(二):勘誤
p89
解构是一种打破数据解构P94
这种语法实际上与传统对象字面量的语法相悖,原来的语法名称在冒号左边,值在右边;现在值在冒号右边,而对象的属性名在左边。后面反了p97
这一点与数组解构的约定不同应为对象
p205
正常情况下,继承自 Array 的 slice() 方法应该返回 Array 的实例,但是在这段代码中,slice() 方法返回的是 MyArray 的实例。原文:
In this code, the slice() method returns a MyArray instance. The slice() method is inherited from Array and returns an instance of Array normally.翻译似乎没有问题,但是一两遍真的很难读懂。应该为:slice() 方法继承自Array,应该会返回一个 Array 的实例。强调的是调用 slice 的结果返回了实例。
《深入理解ES6》读后感(三):入门ES6必读,翻译有错误
书是好书,入门es6必读,但中文版有一些翻译错误的地方,例如第六章讲symbol的开头的整段翻译都有点问题。
英文原文:“…Symbols began as a way to create private object members, a feature Javascript developers wanted for a long time. Before symbols, any property with a string name was easy to access regardless of the obscurity of the name, and the private names feature was meant to let developers create non-string property names. That way, normal techniques for detecting these private names wouldn’t work. The private names proposal eventually evolved into ECMAscript 6 symbols, and this chapter teaches you how to use symbols effectively. Althoughsymbols do add non-string values for property names, the goal of privacy was dropped. Instead, symbol properties are categorized separately from other object properties.”
中文翻译:“……起初,人们用它来创建对象的私有成员,Javascript开发者们对这个新特性期待已久。在Symbol出现以前,人们一直通过属性名来访问所有属性,无论属性名由什么元素构成,全部通过一个字符串类型的名称来访问;私有名称原本是为了让开发者们创建非字符串属性名称而设计的,但是一般的技术无法检测这些属性的私有名称。私有名称最终演变成了ECMAscript 6中的Symbol,本章将讲解如何有效地使用它。虽然通过symbol可以为属性添加非字符串名称,但是其隐私性就被打破了。最终,新标准中将Symbol属性与对象中的其他属性分别分类。”
就不一一指出问题了,试译如下,大家对照着看吧:
“Symbol起初用于创建私有对象成员,这也是Javascript开发者日思夜想的功能。在Symbol出现之前,任何拥有字符串名称的属性都可以轻松访问,无论这个名称有多晦涩难懂。私有名称功能就是为了让开发者创建非字符串类型的属性名称。这样,一般的技术就无法检测到这些私有名称。对于私有名称的提议最终演变成ECMAscript 6中的Symbol。本章会教你如何有效使用Symbol。尽管Symbol确实可以为属性添加非字符串的名称,但其最初的私密性目标已被放弃。取而代之的是,将Symbol属性在其他对象属性中单独分类出来。”
《深入理解ES6》读后感(四):《深入理解ES6》读书笔记
Q
etter函数以及getter函数的作用
对象的访问器属性:get的作用
54-58的函数多种用途以及块级函数看不懂
64-65的箭头函数没有this绑定看不懂
call、apply和bind方法
正确使用Symbol的方法
变量:
不可以访问
变量声明后:可以访问 但是值为undefined
变量初始化后:可以访问 值不是undefined
使用let或者const实现块级声明,这个时候语言引擎会将声明放到临时死区中。
使用var会覆盖一个已经存在的全局属性。
使用策略:默认使用const,只有确定变量需要改变的时候才使用let。
字符串:
如果文字的编码超过了基本多文种平面的话(16位二进制),则需要加入代理对来表示这个文字。
准确比较字符串
a.normalize() === b.normalize()
字符串识别方法:
includes
tartsWith
endsWith
返回新字符串:
repeat
正则的修饰符:
ticky ?
u修饰符:代理对检测修饰符
i修饰符:大小写无关修饰符
global修饰符
获取正则原表达式的文本:source属性
获取修饰符:flags属性
模板字面量
基础用法:用反撇号替换了引号,内部使用反撇号需要用反斜杠转义;可以直接换行也可以用n转义
字符串占位符:${任意的JS表达式}
模板标签:创建领域专用语言DSL,函数化处理literals(文字)以及substitutions(模板字面量)
函数:
在函数中使用默认参数
使用argument对象将入参重制为初始值,ES6以及ES5严格模式下,argument对象不受入参的影响
函数在临时死区进行默认参数的顺序处理
使用argument处理不定量参数:不被箭头函数支持
使用不定参数(...keys)来处理无命名参数:必须放在函数末尾,整合参数为一个可以无限长度的数组,对原来的argument没有影响
使用展开运算符来将数组打散作为独立的参数传入函数:可以混合使用
箭头函数:
let doNothing = () => {};
和sort、map、reduce这类数组方法合用
在箭头函数上调用call、apply和bind方法
重写递归函数,利用尾调用优化来优化程序
对象:
创建对象: Object.create(xx)
对于对象方法的定义消除了冒号和function关键字
比较两个参数的类型和值:Object.is(a,b),用于判断NaN和NaN等价
混合:一个对象接收来自另一个对象的属性和方法。
Object.assign()方法可以接收任意数量的对象,并按照制定的顺序将属性复制到接收对象中。同时:如果属性重复,获取最后一个属性。
通过Object.getOwnPropertyNames()来明确定义枚举顺序(82)。
使用Object.setPrototypeOf()来修改对象的原型(82)。使用super来调用对象的原型(84),并始终指向正确的对象(86)。
对象:
解构赋值 +默认值 + 为非同名变量赋值 + 嵌套
数组:
解构赋值 +默认值 + 嵌套 + 不定元素
混合解构:
对象解构 + 数组解构
解构参数:
用比较冗余的方式设立解构参数;
用比较不溶于的方式设立;
ymbol
定义方法
使用方法
共享体系:全局访问列表
et
创建:new Set([1,2,3,4]); add,重复的参数调用会忽略(132)。
删除元素:delete
修改:无
查询:has
遍历:注意回调函数的前两个参数的值是一样的(134)。
转化为数组:利用展开运算符
缺点:无法通过索引值访问元素;不受到原引用的影响
优点:保证元素的值不重复
WeakSet
创建: new WeakSet();add
缺点(138-139):只能add对象,不可迭代,不支持size属性
优点:当其最后一个引用被移除的时候(= null),其会被回收并释放内存
Map
创建:new Map(arr1, arr2, arr3....);set([key], [value])
删除:删除元素delete([key]),移除所有元素clear()
修改:猜测:set()
查询:get([key]), has([key])
遍历:value、key、其本身(142)
缺点:调用比较麻烦
优点:不会像对象一样,将属性名强制转换为字符串类型;可以将对象作为属性名(唯一选择147)
WeakMap
缺点:key值只能是对象
优点:不支持遍历、size属性和clea()r方法
迭代器的使用场景和历史(149)
目的:消除循环复杂性减少错误
生成器
目的:用于简化创建迭代器对象过程
创建:函数命名前增加星号,yield(152)
特性:yield无法超过函数边界(153)
地位:ES6的重要特性
迭代器
应用场景:可迭代对象:数组、Set、Map、字符串(155)
访问默认迭代器:value[Symbol.iterator]() (156)
访问内建迭代器:entries() values() keys()
使用:next(), for of(160)