JavaScript 高级程序设计 (1-5)


基本
1. 分号记得加。(不加也可以)
2. parseInt,后边第二个参数标识一下的几进制,可以加上10。
3. valueOf 对对象来说就是重载=
4. “55” == 55 , true/ “555” === 555, false。全等时需要考虑类型。第一个比较先转成Number。
5.  if (i= 0,i= 1 ) {
    //逗号表达式:全部都会执行,但是从左往右。
    //逗号表达式代表的逻辑值为最后一个表达式的逻辑值。
    //当赋值为非0时赋值表达式代表的逻辑值为真。i=0 为假,i = -1为真。
6. swtich 可以使用常量,变量,表达式等。比较使用全等。“10” !== 10
7. 函数中,arguments代表参数,可以不写参数,也可以使用该对象访问。arguments会随着参数被改变而变化。
8. 无函数重载,后边的函数替换前边定义的函数。
9. 基本类型无法添加属性。但是引用类型的值可以。
10. 赋值复制时,基本类型新建一个对象。而引用类型只是拷贝了一个引用,指向了同一个对象。
11. 函数参数都是按值传递的,不过引用类型拷贝参数时使用的是引用拷贝。
12. typeof null 的结果是object
13. 操作符typeof、instanceof。基本类型的instanceof结果都是false。
14, 没有块级作用域,在for循环中的变量也可以被后边同环境代码访问。

Array
15. 与C/C++区别,同一个Array中允许不同类型的数据。
16. 使用字面量表创建object、Array时,不会调用构造函数。
17. 数组的length 不是只读的,可以用来移除末尾项或者新增undefined项。
18. 确认数组以前用value instanceof Array。现在建议Array.isArray(value)
19. Array, 可以像栈一样被push、pop
20. 像队列一样使用,就是shift和push。
21. 还可以用unshift在前边插入,再加上pop就可以达到逆向队列的效果。
22. reverse和sort.sort可以使用闭包。
23. concat连接,slice就是分割(不会影响原数组)。
24. splice:1. 删除(0,2)从第0项开始删除2个。
         2. 插入和替换。(2, 1, “aaa", "bbb”) 从第2项,开始删除一个,插入两个元素。
         3. 返回值:删除的项。
25. indexof、lastIndexof, 使用全等判断。
26. 5个迭代函数,都不会修改数组的值。
         1. every:每一项都执行给定函数,并且每一项结果为true,返回true。
         2. some:每一项都执行给定函数,存在一项结果为true,返回true。
         3. filter:每一项都执行给定函数,返回执行结果为true的项组成的数组。
         4. forEach:对数组每一项都执行给定函数,无返回值。
         5. map:对数组每一项都执行给定函数,返回每次调用的结果组成的数组。

Date
27. 可以直接初始化得到当前的UTC时间。也可以用字符串Date.parse()。还可以用Date.UTC()年月日时分秒。
28. 直接使用new Date(Y,M,D,,,)结果是本地时间。而使用UTC的结果是GMT时间。
29. Date.now方便取得当前日期和时间的毫秒数。Date.UTC()也会放回毫秒数。
30. 月份从0-11. valueOf返回的是毫秒数。所以比较时间时,越早的越小。
31. getTime/setTime getFullYear/getUTCFullYear....


RegExp
1. var expression = /passion/flags. 
     flags: 1.g:全局匹配/2. i: 不区分大小写/ 3 m:多行匹配(本行结束了继续下一行)
2. 它有自己的实例属性,global\ ignoreCase\ lastIndex\ multiline\ source
3. 实例方法:exec,返回值为null或者match数组:0,匹配的字符串。1:第一个捕捉的字符串。依次类推。
     还有match两个属性,index:匹配项在字符串的位置。input就是文本本身。
4. 全局标志和exec。如果设置了全局g,exec只会返回一个匹配项。但是每次匹配的起点位置不同,pattern的lastIndex有不同。
     如果没有全局标志,每次的输出结果都是一样的。
5. test只是用来测试有效性,匹配是否成功。。
6.局限性
  1. 向后查找。
  2. 并集和交集类。
  3. 原子组。
  4. Unicode支持。
  5. 命名的捕获组。
  6. 条件匹配。
  7. 正则表达式注释。

Function
1. 函数是Function类型的对象。用函数声明语法定义同函数表达式定义几乎无区别。
2. 没有重载。
3. 函数声明会在代码开始执行之前解析到执行环境。
4. 函数可以作为值传递,参数,返回值。
5. 函数内部属性,arguments 和 this。arguments有一个对象callee, 可以定位到拥有该arguments的函数指针。如递归时,可以用arguments.callee指向函数本身,避免出现函数名。caller,可以指向调用该函数的函数。全局作用域结果为null。
6. 函数的属性和方法。length就是函数希望接受的参数个数。prototype。不可枚举。for-in无法发现。
7. 每个函数都包含两个非继承而来的方法:apply和call。apply: 第一个参数是运行函数的作用域,第二个参数是Array的实例或者arguments对象。
call:将第二个参数展开,不是数组。作用:通过这两个方法,可以扩充函数执行的作用域。
8. 还可以bing,通过bind生成一个对象函数,执行确定的作用域函数。bing(0),var afuncObj = afunc.bind(this)
9. toLocalString, toString. valueOf等都是返回函数代码,调试时有用。

5.6 基本包装类型。
1. 如s1 = "some text"; var s2 = s1.subString(2);这中间执行过程中创建了一个临时的String类型的一个实例。调用该方法,销毁。
2. var value = "25"; var number = Number(value),这个number就是number类型。而 var obj = new Number(value),得到的obj就是基本包装类型。typeof 结果为object。少用为妙。

Boolean,对象全部是true!
1. 基本类型的布尔值,同Boolean对象存在区别。永远不要使用Boolean对象。

Number
1. toString, 传入参数可以转换进制。
2. toFixed, 可以设置小数点后几位。
3. toExponential, 可以设置科学计数法。
4. toPrecision, 以上两个方法都可能。如99, 1的话就是1e+2. 2的话就是99, 3的话就是99.0
5. Number对象那的typeof是object不是number。

String, 是字符串的对象包装类型。
1. length
2. charAt. charCodeAt. []
3. concat(+更好用)

截取字符的函数
Normal
第一个参数为负数
第二个数为负数
slice
1. 子字符串开始。
2. 默认到哪里结束的后边。
将负数与数组长度相加。
将负数与数组长度相加。
substr
1. 子字符串开始。
2. 截取的个数。(默认到结束)
将负数与数组长度相加
将负数转为0,故结果未“”
subString
1. 子字符串开始。
2. 默认到哪里结束的后边。
将负数转为0
将负数与数组长度相加。调整参数,从小到大。

4. 字符串位置:indexOf, lastIndexOf第二个参数表示从哪里开始搜索。结果为失败,返回-1
5. trim、删除前缀和后缀的空格。
6. 字符串大小写转换: toLowerCase()、toLocaleLowerCase、toUpperCase()、toLocaleUpperCase。
7. 字符串的模式匹配方法
match,本质上与RegExp的exec相同。参数正则表达式或者RegExp对象。
search, 参数同match, 从前向后找,匹配成功返回索引。失败返回-1
replace, 第一个参数可以是字符串,也可以是带有/gim等的正则表达式。
         如:$$ -> $/$& -> 匹配整个模式的子字符串。
$$ $
$&
匹配整个模式的子字符串。
$'
匹配的子字符串之前的子字符串。
$`
匹配的子字符串之后的子字符串。
$n
匹配第n个捕获组的子字符串。或者空。
$nn
匹配第nn个捕获组的子字符串。或者空。
         第二个参数如果是字符串,可以带有一些特殊字符序列。
         第二个参数如果是函数。
                 只有一个匹配项时:参数分别为:模式的匹配项,模式匹配项在字符串中的位置和原始字符串。
                 存在多个匹配项时:参数分别为:模式的匹配项,第一个捕获组的匹配项,第二个。。。最后两个参数仍然是同上。
split,分隔符可以是字符串,也可以是一个RegExp对象。可以接收第二个可选参数,指定数组的大小,返回结果不能超过。
8. localeCompare方法。
比较字符串中字符的顺序。字母表前边的越小。大写字母排在小写字母前头。
9. fromCharCode方法。
将字符编码装换为字符串。同charCodeAt相反的动作。
如String.fromCharCode(104, 101, 108, 108, 111)  --- "hello"

Global
1. URI编码方法
encodeURI、encodeURIComponent方法用来编码的。后者会对它发现的任何非标准字符进行编码。更常用。
decodeURI、decodeURIComponent方法各自对应。后者更常用,功能更强。
2. eval方法。
类似于解析器,可以接受一个参数:可以执行的JS字符串。
代码中可以引用再包含环境中定义的变量。
也可以再eval中定义函数,然后在外部调用。变量同样。
记得防止代码注入。
3. Global对象的属性。
Date.RegExp.Error.String等。Nan,undefined等。
4. window对象
在window全局与定义的东西,可以通过window.color来访问。

Math
1. 属性:E\LN10\LN2\LOG2E\PI\SQRT2\SQRT1_2
2. min,max允许多个参数。可以通过apply函数使用数组。Math.max.apply(Math, array)
3. ceil向上舍入。floor向下舍入。round标准舍入。
4. random 返回0-1之间的一个随机数。
5. abs绝对值。pow(num,power)返回num的power次幂。sqrt平方根。等等记得

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值