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>元素被的其余内容。

 

第3段 基本概念

1、语法

及 Java 一样,变量、函数誉为、运算符以及另外任何事物还是分别轻重缓急写的。

标识符需要遵守两长简单的规则(采用驼峰式大小写格式):

  • 先是个字符必须是字母、下划线(_)或美元符号($)
  • 剩下的字符可以是生划线、美元符号或任何字母或数字字符

   

   2、数据类型

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

Undefined:表示变量还从未赋值,或予以一个不有的属性值

Null:表示变量被与了一个空值

Boolean:布尔值

Number:数值

String:字符串

还有雷同栽复杂数据列Object:一组数以及效力的成团

来3只函数可以管非数值转换为数值:Number()、parseInt()、parseFloat()。

 

第4章节 变量、作用域和内存问题

1、ECMAScript变量可能包含两栽不同数据类型的价值:基本类型值(栈内存中的概括数据段)和援类型值(堆内存中的内存,实际上保存之只有是一个指针)。

确定一个价值是啊种为主项目的好利用typeof操作符,而规定一个价值是呀种引用类型可以运用instanceof操作符。

2、执行环境有大局执行环境暨函数执行环境的分。

  
内部环境好经过作用域链访问外部环境,但外部环境不能够看中条件受到之别样变量和函数。

   延长作用域链:当尽流进去下列任何一个话语时

           ry-catch语句的catch块;

      ith语句。

3、JavaScript是相同派别有活动垃圾收集体制的编程语言,开发人员不必关心内存分配与回收问题。

 

第5章节 引用类型

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”);
//创建一个分包3独字符串值的数组

 

//使用频繁组字面量表示法

var colors = [“red”,”blue”,”green”];  //创建一个涵盖3独字符串的数组

 

(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;

}

函数声明与函数表达式的区分:

 
解析器在朝实践环境面临加载数据时,解析器会率先读取函数声称,并设该于实践另外代码之前可用(可以看);至于函数表达式,则须顶交解析器执行及她所于的代码行,才会真叫诠释施行。

 

6、内置对象

当备代码执行之前,作用域中虽曾是个别单放对象:Global和Math。

全局变量和函数都是Global对象的属性。

Math对象呢保留数学公式和消息提供了一个国有位置。

l        min()和max()方法用于确定一组数值中之尽小值和极其可怜价值;

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

l        random()方法返回介于0和1之间一个自由数,不保险括0和1;

l        其他措施
Math.abs(num)返回num的绝对值、Math.sqrt(num)返回num的平方根 等等。