JavaScript高级程序设计-读书笔记(1)

第1章 JavaScript简介

JavaScript是一种专为与网页交互而设计的脚本语言,由下列多少个例外的有个别组成:

l        ECMAScript:提供基本语言成效;

l        文书档案对象模型(DOM):提供访问和操作网页内容的艺术和接口;

l        浏览器对象模型(BOM):提供与浏览器交互的法子与接口。

 

第2章 在HTML中使用JavaScript

把JavaScript插入到HTML页面中采用到<script>成分。

HTML 4.01为<script>定义了下列6性子格:

l       
async:可选,表示应当及时下载脚本,但不应妨碍页面中的别的操作,比如下载别的能源或等候加载其余脚本。只对表面脚本文件有用。

l        charset(很少用)

l       
defer:可选,表示脚本能够顺延到文书档案完全被解析和突显之后再进行。只对表面脚本文件有用。

l        language(已废弃)

l        src:可选,表示包涵要履行代码的表面文件。

l        type:可选,假设没指定那个天性,那其暗中认可值仍为text/javascript。

运用<script>成分的方法有二种:直接在HTML界面中嵌入JavaScript代码和带有外部的JavaScript文件。

留意:带有scr属性的<script>成分不应该在其<script>和</script>标签之间再包括额外的JavaScript代码。

 

标签地方:一般把<script>成分放在界面内容之后和得了的</body>标签从前。

行使<noscript>成分得以内定在不帮衬脚本的浏览器中体现的替代内容。但在运行了剧本的状态下,浏览器不会展现<noscript>成分中的任何内容。

 

第三章 基本概念

1、语法

与 Java 一样,变量、函数名、运算符以及任何任何事物都是分别轻重缓急写的。

标识符必要坚守两条简单的条条框框(采取驼峰式大小写格式):

  • 第一个字符必须是字母、下划线(_)或港币符号($)
  • 剩下的字符能够是下划线、欧元符号或别的字母或数字字符

   

   贰 、数据类型

ECMAScript 有 5 种基本数据类型(primitive type),即

Undefined:表示变量还平昔不赋值,或予以2个不存在的属性值

Null:表示变量被予以了2个空值

Boolean:布尔值

Number:数值

String:字符串

再有一种复杂数据类型Object:一组数据和效能的集聚

有一个函数能够把非数值转换为数值:Number()、parseInt()、parseFloat()。

 

第四章 变量、功用域和内部存储器难点

一 、ECMAScript变量只怕包罗二种区别数据类型的值:基本类型值(栈内部存款和储蓄器中的简短数据段)和引用类型值(堆内部存款和储蓄器中的内部存款和储蓄器,实际上保存的只是3个指针)。

规定三个值是哪类为主项指标能够使用typeof操作符,而规定二个值是哪个种类引用类型能够行使instanceof操作符。

二 、执行环境有大局执行环境和函数执行环境之分。

  
内部条件得以透过功用域链访问外部环境,但外部环境不可能访问内部条件中的任何变量和函数。

   延长作用域链:当执行流进来下列任何四个言辞时

           ry-catch语句的catch块;

      ith语句。

叁 、JavaScript是一门具有电动垃圾收集体制的编制程序语言,开发人士不必关怀内部存款和储蓄器分配与回收难点。

 

第⑤章 引用类型

1、Object类型

创制Object实例的三种办法:

  第②种是应用new操作符后跟Object构造函数,如

      var person = new Object();

person.name = “Nicholas”;

person.age = 29;

另一种艺术是运用对象字面量表示法,如

    var person = {

name : “Nicholas”,

age : 29

};

 

2、Array类型

ECMAScript数组的每一项可以保留任何项指标数目

(1)创设数组

     //使用Array构造函数

          var colors = new Array();

var colors = new Array(3);
//成立包罗3项的数组,每一项的初值皆以undefined

var colors = new Array(“red”,”blue”,”green”);
//创立多少个暗含一个字符串值的数组

 

//使用数组字面量表示法

var colors = [“red”,”blue”,”green”];  //创造八个饱含三个字符串的数组

 

(2) 访问和安装数组

alert(colors[0]);  //展现第壹项

colors[2] = “black”;  //修改第贰项

 

//数组的项数保存在其length属性中

alert(colors.length);

 

转换方法:数组继承的toLocaleString()、toString()和valueOf()方法,在暗中认可景况下都会以逗号分隔的字符串的样式再次来到数组项。而只要采用join方法,则能够使用不一样的相间符来创设那些字符串。

 

数组的各类操作:

(1)使用push()和pop方法达成类似栈的作为

(2)结合使用shift()和push()方法,能够像使用队列一样使用数组。其余,unshift()与shift()的用途相反

 (3)排序:反转数组项的顺序reverse()和升序sort()

(4)concat 方法

回来八个新数组,那些新数组是由四个或越多数组组合而成的。

array1.concat([item1[, item2[, . . . [, itemN]]]])

(5)slice 方法

归来几个数组的一段。

arrayObj.slice(start, [end])

   (6)splice 方法

从一个数组中移除二个或八个要素,假若供给,在所移除成分的地方上插入新因素,再次回到所移除的因素。

arrayObj.splice(start, deleteCount, [item1[, item2[, . . .
[,itemN]]]])

         

3、Date类型

能够经过 new 关键词来定义 Date 对象,如

var myDate=new Date()

  
在调用Date构造函数而不传递参数的地方下,新创立的靶子活动得到当明天子和岁月。

  
假如想依照特定日期和岁月创建日期对象,ECMAScript提供了四个办法:Date.parse()和Date.UTC()。

 

4、RegExp类型

   使用上边的语法能够创设八个正则表明式:

     var expression = / pattern / flags;

  当中flags支持上边3个标志:

u      g——表示全局(global)情势

u      i——表示不区分轻重缓急写(case-insensitive)情势

u      m——表示多行(multiline)形式

 

5、Function类型

函数证明,如:

function sum(num1,num2){

return num1+num2;

}

函数表明式,如

var sum = function(num1,num2){

          return num1+num2;

}

函数注明与函数表明式的区分:

 
解析器在向实践环境中加载数据时,解析器会率先读取函数宣称,并使其在实施其余轮代理公司码以前可用(能够访问);至于函数表明式,则必须等到解析器执行到它所在的代码行,才会真的被演讲实施。

 

⑥ 、内置对象

在拥有代码执行此前,功能域中就曾经存在七个放置对象:Global和Math。

全局变量和函数皆以Global对象的性质。

Math对象为保留数学公式和新闻提供了三个国有地方。

l        min()和max()方法用于明确一组数值中的最小值和最大值;

l        舍入方法ceil()、floor()、round();

l        random()方法再次回到介于0和第11中学间二个随意数,不包含0和1;

l        其余艺术
Math.abs(num)重临num的断然值、Math.sqrt(num)重返num的平方根 等等。