见104页
标签语句
类似C语言goto,不常用,使用方法不熟悉
见106页
continue语句在不同循环体中不同的表现行为
while 判断开始的循环表达式
do/while 判断结尾的循环表达式
for 先计算自增表达式,再判断循环表达式
for/in 遍历下一个属性名
见108页5.6.3
throw的向上传递
见110页5.6.5下
finally执行问题
只要try语句中有一部分代码执行了,finally就会执行。就算try中使用了return,continue,break也是如此
利用try/finally使while循环模拟for循环(无法完美实现)
见112页下
with语句
将对象添加到作用域链的头部,不建议使用
见113页5.7.1
debugger
设置程序断点,用于程序调试(作为ACMer)
见114页5.7.2
“use strict”
使用严格模式
严格模式区别(前三条非常重要):
1.禁止使用with语句
2.所有变量都要先声明
3.调用的函数(不是方法)中的this为undefined
4.通过call和apply来调用函数时,this就是传入的第一个参数
其余见115页中
------------------------------------------------国庆期间 结束---------------------------------------------------------------------------
------------------------------------------------16.10.11 开始---------------------------------------------------------------------------
对象的属性名如果为保留字(ES3)/有空格/有-连字符的话必须用引号引起来
最后一个属性后的逗号将忽略,ES3中大部分实现中也可以,但是在IE中报错。
见120页中下
创建对象的三种方法:
1、var o1 = {};
2、var o2 = new object();
3、var o3 = Object.create(Objecet.prototype);
这三种方法创建出来的对象都是一样的,都是继承自Objecet.prototype。
是不一样的。
其中2和3方法都可以指定原型对象.
var p = {x:1}
var o2 = new object(p);
var o3 = Object.create(p);
见121页6.2.1
------------------------------------------------16.10.11 结束---------------------------------------------------------------------------
------------------------------------------------16.10.13 开始---------------------------------------------------------------------------
对象的属性的赋值操作会首先检查原型链,如果原型链中有,并且是只读的,那么赋值操作就是不允许的。否则,就在原始对象(不是原型链上的)添加新的属性或者对已有的属性赋值。
在查询属性时才会体会到继承的存在,而设置属性则和继承无关。
见125页下
给对象o设置属性p失败的场景:
1、o中的属性p是只读的。
2、o中的属性p是继承属性,而且是只读的。
3、看不懂,参见6.8.3
见127页中
126页6.2.3的上面有一段看不懂,参见6.6,以后回来再看。