第2章 语法
2.3 数字
1. JavaScript只有一个单一的数字类型,它在内部被表示为64位的浮点数,1与1.0是相同的值。
number literal = integer + (fraction) + (exponent)
2. 值NaN是一个数值,它表示一个不能产生正常结果的运算结果,NaN不等于任何值,包括它自己,可以用函数 isNaN(number) 来检测NaN。
2.5 语句
1. 在条件语句中,下面列出的值被当作假(falsy):
fasle, null, undefined, 空字符串‘’, 0, NaN
2. try语句
try语句执行一个代码块,并捕获该代码块抛出的任何异常。catch从句定义了一个新的变量,它将接收该异常对象。
3. throw语句
throw + expression
throw语句抛出一个异常。如果throw语句在一个 try 代码块中,那么控制权会跳到 catch 语句中。如果 throw 语句在函数中,刚函数调用被放弃,且控制权会跑到调用该函数 的 try 语句中的 catch从句中。
throw 语句中的表达式通常是一个对象字面量,它包含一个 name 属性和一个 message 属性。异常捕获器可以使用这些信息去决定该做什么。
第3章
3.1 对象字面量
var empty_object = {};
var stooge = {
"first-name": "Jerome",
"last-name": "Howard"
};
嵌套
var flight = {
airline: 'Oceanic',
number: 815,
departure: {
IATA: 'SYD',
time: '2004-09-22 14:55',
city: 'Sydney'
},
arrival: {
IATA: 'LAX',
time: '2004-09-23 10:42',
city: 'Los Angeles'
}
};
3.2 检索
要检索对象中包含的值,可以采用在 [ ] 后缀中括住一个字符串表达式的方式。如果字符串表达式是一个常数,而且它是一个合法的JS标识符而并非保留字,那么也可以用表示法代替。优先考虑使用 " ." 表示法。
如果尝试检索一个并不存在的成员元素的值,将返回一个undefined值。
3.5 原型
每个对象都连接到一个原型对象,并且它可以从中继承属性。所有通过对象字面量创建的对象都连接到 Object.prototype 这个JS中标准的对象。
当你创建一个新对象时,你可以选择某个对象作为它的原型。我们将给 Object 增加一个 beget (产生、引起、招致、当…父亲)方法。这个 beget 方法创建一个使用原对象作为其原型的新对象。
if (typeof Object.beget !== 'function') {
Object.beget = function (o) {
var F = function () {};
F.prototype = o;
return new F();
};
}
var another_stooge = Object.beget(stooge);
原型连接在更新时是不起作用的。当我们对某个对象做出改变时,不会触及到该对象的原型。
原型连接只有在检索值的时候才被用到。如果我们尝去获取对象的某个属性值,且该对象没有此属性名,那么JS会试着从原型对象中获取属性值。如果还没有,再从它的原型中寻找,直到该过程最后到达终点 Object.prototype 。如果想要的属性完全不存在于原型链中,那么结果就是undefined。
3.6 反射
检查对象并确定对象有什么属性。
typeof flight.arrival //'object'
flight.hasOwnProperty('number') //true
3.8 删除
删除对象的属性可能会让来自原理链中的属性浮现出来。
delet another_stooge.nickname;
3.9 减少全局变量污染
最小化使用全局变量的一个方法是在你的应用中只创建唯一一个全局变量,该变量此时变成了你的应用的容器。
var MYAPP = {};
MYAPP.stooge = {
"first-name": "Jerome",
"last-name": "Howard"
};
MYAPP.flight = {
airline: 'Oceanic',
number: 815,
departure: {
IATA: 'SYD',
time: '2004-09-22 14:55',
city: 'Sydney'
},
arrival: {
IATA: 'LAX',
time: '2004-09-23 10:42',
city: 'Los Angeles'
}
};
MYAPP.stooge 指向的是顶层结构。另外,用闭包来进行信息隐藏的方式,是另一个有效减少全局污染的方法。