《JavaScript权威指南》学习笔记

一、类型,值和变量

1.构造函数

函数用来初始化一个新建的对象,我们称为构造函数。每个构造函数定义了一类对象(由构造函数初始化的对象组成的集合)

数组类,函数类,日期类,正则类,错误类

2.Math对象的复杂运算:

Math.pow(2,53)  //2的53次幂

Math.round(.6)  //四舍五入

Math.ceil(.6)  //向上求整

Math.floor(.6)  //向下求整

Math.abs(-5)  //求绝对值

Math.sqrt(3)  //3的平方根

Math.log(10)  //10的自然对数

Math.exp(e)  //e的三次幂

3.NaN

没有办法通过x==NaN来判断变量x是否是NaN。应该用x!=x来判断,当x=NaN时为true。函数isNaN()的作用与此类似,若参数是NaN或一非数字值,返回true。isFinite(),参数不是NaN,Infinity或-infinity时返回true

4.Date()构造函数

var then = new Date(2011, 0, 1)  //2011年1月1日

var later= new Date(2011, 0, 1, 17, 10, 30)  //2011年1月1日 5:10:30pm

var now = new Date()  //当前日期和时间

var elasped = now - then  //计算时间间隔的毫秒数

later.getFullYear()  //2011

later.getMonth()  //0 从零计算月份

later.getDate()  //1 从1计算天数

later.getDay()  //5 得到星期几0代表星期日5代表星期一

later.getHours()  //当地时间17 :5pm

later.getUTCHours() //UTC表示小时的时区

5.JavaScript转义字符

\o   NUL字符    \b  退格符   \t   水平制表格  \n  换行符    \v   垂直制表符   \f   换页符   \r   回车符 

\"   双引号    \'   单引号    \\   反斜线   

6.字符串方法

var s = "hello, world"

s.charAt(0)   //第一个字符 h

s.charAt(s.length - 1)   //最后一个字符 d

s.substring(1, 4)    //第2~4个字符

s.slice(1, 4)    //第2~4个字符

s.slice(-3)    //最后3个字符

s.indexOf("l")   //字符l第一次出现的位置

s.lastIndexOf("l")   //字符l最后一次出现的位置

s.split(",")  // ['hello", "world"]分割成子串

s.replace("h", "H")  //全文字符替换

7.数字转化为字符串3种方法

var n = 123456.789;

n.toFixed(0);   //"123456"

n.toFixed(2);   //"123456.79"

n.toFixed(5);   //"123456.78900"

n.toExponential(1);   //"1.2e+5"

n.toExponential(3);   //"1.235e+5"

n.toPrecision(4);   //"1.235e+5"

n.toPrecision(7);   //"123456.8"

n.toPrecision(10);   //"123456.7890

8.转化为数字

Number(), parseInt(), parseFloat()

9.检测属性

10.获得属性描述符

11.数组方法

可以用Object.defineProperty()让数组的length属性变成只读

join(): 将数组所有元素转化为字符串连接起来

reverse() : 将数组元素颠倒顺序,返回逆序的数组

sort() : 将数组里的元素排序

             

concat() : 创建并返回一个新数组

slice() : 返回指定数组的一个片段或子数组,不会修改调用数组

splice() : 在数组中插入或删除元素的通用方法,会修改调用数组

push() : 在数组尾部添加一个或多个元素

pop() : 删除数组最后一个元素,减小数组长度并返回它删除的值

unshift() : 在数组头部添加一个或多个元素

shift() : 删除数组第一个元素,减小数组长度并返回它删除的值

12.ES5数组方法

forEach() : 从头到尾遍历数组,为每个元素调用指定函数,三个参数分别:数组元素,元素索引,数组本身

                 var data = [1,2,3,4,5];

                data.forEach(function(v, i, a) { a[i] = v + 1}); //[2,3,4,5,6]

               若想提前中止遍历,必须将方法放到try块中

                

map() : 将调用数组的每个元素传递给指定函数,并返回一个数组,包含函数的返回值

filter() : 返回数组元素是调用的数组的一个子集

           

every() : 当且仅当针对数组中的所有元素调用判定函数都返回true,才返回true

some() : 当数组中至少有一个元素调用判定函数返回true,就返回true

reduce() 和 reduceRight() : 使指定的函数将数组元素进行组合,生成单个值

                 var a = [1,2,3,4,5];

                 var sum = a.reduce(function(x,y) {return x+y},0);  //数组求和  15

                 var max = a.reduce(function(x,y) {return (x>y)?x:y} );  // 求最大值

indexOf() 和  lastIndexOf() : 搜索整个数组中具有给定值的元素,返回找到的第一个元素返回其索引值,没有找到返回-1,                                                      indexOf() 是从头搜索,lastIndexOf()则反向搜索。

13.闭包

函数对象可以通过作用域链相互关联起来,函数体内部的变量都可以保存在函数作用域内,这种特性称为闭包

14.判断参数个数

15.call()与apply()

通过调用方法的形式来间接调用函数

f.call(o,1,2);

f.apply(o, [1,2]);

var biggest = Math.max.apply(Math, array_of_numbers);

16.函数式编程

创建子类

B.prototype = inherit(A.prototype);  //子类派生来自父类

B.prototype.constructor = B;  //重载继承来的constructor属性

防止类的扩展

Object.seal()可以阻止用户给对象添加新属性,还能将当前已有的属性设置为不可配置的。Object.freeze()相同

17.正则表达式

正则表达式是一个描述字符模式的对象。进行强大的模式匹配和文本检索与替换功能,JS中正则表达式用RegExp对象表示

  任意表达式都可以作为锚点条件。如果在‘(?=)’和‘)’之间加一个表达式,他就是一个先行断言,说明圆括号中的表达式必须正确匹配,例如   /[Jj]ava([Ss]cript)?(?=\:)/ 可以匹配“Javascript: The great language”中的 Javascrip,但是不匹配“Java is good”中的Java。 带有“(?!”的断言是负向先行断言

18.用于模式匹配的String方法

String支持4种正则表达式的方法

(1)search(),参数是一个正则表达式,返回第一个与之匹配的子串的起始位置,如果找不到匹配的子串就返回-1

      “JavaScript”.search(/script/i);             //返回4

   search不支持全局检索

(2) replace()方法用于检索和替换操作

        text.replace(/javascript/gi, "JavaScript");         // 将所有不区分大小写的javascript都替换成JavaScript

(3) match()返回的是一个由匹配结果组成的数组

(4) split() 将调用它的字符串拆分成一个子串组成的数组

19.数组推导

20.在HTML里嵌入JavaScript

  • 内联,放在<script></script>之间
  • 放置在<script>标签的src属性指定的外部文件
  • 放置在HTML事件处理程序里,该事件处理程序由onclick或onmouseover这样的HTML属性值指定
  • 放在一个URL里,这个URL使用特殊的"javasccript:"协议

21.载入新的文档

22.对话框

   除了alert(),confirm()和prompt()方法,还有一个包含HTML的“模态对话框”,showModalDialog()可以给它传参数并获取返回值,第一个参数用于提供对话框HTML内容的URL。第二个参数是一个任意值,这个值在对话框的脚本中可以通过window.dialogArgments属性的值访问。第三个参数是一个非标准的列表,包含以分号隔开的name=value对,如果提供这个参数,可以配置对话框的尺寸和其他属性

猜你喜欢

转载自blog.csdn.net/qq892765518/article/details/82345427