1. var a1 = [,,]; 0 in a1;// ->true(错误,应该是false!!!!!!!!!!!!!!!!!!!!!)
var a2 = new Array(2); 0 in a1;// ->false
2. 每个Array对象都有length属性,
正是这个属性使Array对象与众不同。
3. 一个数组的元素的index永远不会大于或等于数组的lengt
h,如a = [1, 2, 3];
a). a[100] = 100; 执行后a.length -> 101,只不过从3 - 100都是null。
b). a.length = 1; 执行后a ->[1], 后面的都被remove了。
4. Array.isArray(x); 用于判断给出的参数x是否是Array。
5.
this:作为method调用(o.f())时,是调用对象。
作为function调用时,是golbal object,但在strict mode中,在function调用中是undefined。
6. 在function中用arguments来得到传到方法里的所
有参数,改变arguments中的值也会改变原方法的值。
7. function的length属性是指其声明时期待的参数的个
数。
8. 使用
Function构造器同样可以创建方法:var f = new function("x", "y", "return x*y;");
a). 允许JS在运行时动态的创建和编译。
b). 最重要的区别是Function创建的方法不会有语义化的作用域
,它们被视为最高层的方法来运行。
c). 尽量少用!
9. 所有的方法都是可以被调用的,
但不是所有可以被调用的对象都是方法,如:window.
alert(),document.
getElementById(..),RegExp()。
10. F.prototype.constructor == F//->true
11. 用类创建实例后,若类的prototype值发生变化,
那么所有的引用也会发生变化,
所有的实例都是继承同一个prototype。
12. 给对象做加量:String.prototype.trim = function(){}。甚至可以给Object做加量,
但是不推荐,因为这些加量会在for...in...
循环中被遍历。
13. 不用typeof来判断类型:
switch(x.constructor){
case Number:
case String:
case Date:
}
14. x.constructor若是多重继承,
且非顶层类没有自己的constructor,
那么返回再上面的constructor,直到找到。
15. //来创建正则表达式,类似""创建string。
16. 正则表达式中特殊意义的字符:~$.*+?=!:|/\()[]
{},不确定是否应该转义时,转义就没错。
17. /a*/能匹配"bbb",因为有0个a。
18. 标签://i //g //m
19. new RegExp("\\d{5}") 等价于 /\d{5}/,在前者中\需要转义。
20. const x = 123;//x -> 123
const x = 456;//x -> 123
x = 456;//x -> 123
var x = 456;//x -> 123