《JavaScript语言精粹》读书笔记

来源:互联网 发布:如何用excel做数据统计 编辑:程序博客网 时间:2024/05/16 09:06

读了这本书,增长了不少js的知识。下面罗列一下以前在学习和使用js过程中,忽略的问题:

1、JavaScript支持两种注释方式,/* */块注释 和 //行注释。但是尽量避免使用/* */块注释,因为在JavaScript中,这个符号可能出现在正则表达式中,所以块注释对于被注释的代码块来说是不安全的。例:

/*
var rm_a = /a*/.match(s);
*/ 

会导致一个语法错误。

2、JavaScript只有一个单一的数字类型。它在内部被表示为64位的浮点数。1和1.0是相同的值。

3、JavaScript的所有字符都是16位的。JavaScript没有字符类型,要表示一个字符,只需要创建仅包含一个字符的字符串即可。

4、每个对象都连接到一个原型对象,并且它可以从中继承属性。所有通过对象字面量创建的对象都连接到Object.prototype这个JavaScript标准对象。

当创建一个新对象时,你可以选择某个对象作为它的原型。JavaScript提供的实现机制杂乱而复杂,但其实它可以被明显简化。我们将给Object对象增加一个beget方法,这个方法可以创建一个使用原对象作为其原型的新对象。

原型连接只有在检索值时才会被用到,如果我们尝试去获取对象的某个属性值,且该对象没有此属性值,那么JavaScript会尝试从原型对象中获取属性值,如果那个原型对象也没有此属性值,那么再从它的原型中寻找,以此类推,直到到达原型链的根Object.prototype。如果想要的属性不存在于原型链,那么结果就是undefined值。

5、delete运算符可以删除对象的属性。它将会移除对象中确定包含的属性,不会触及原型链中的任何对象。删除对象的属性可能会让原型链中的属性浮现出来。

例:

stooge的nickname初始值为“Curly”

another_stooge.nickname = "Mack";

document.write(another_stooge.nickname); //Mack

delete another_stooge.nickname;

document.write(another_stooge.nickname);   //Curly

但是如果不使用 another_stooge.nickname获取nickname值时,使用for in遍历时将不会出现nickname属性,但是一旦使用了another_stooge.nickname,那么使用for in遍历时就会出现nickname属性。

原创粉丝点击