JavaScript高级程序设计
《JavaScript高级程序设计(第三版)》读书笔记
Wonder233
这个作者很懒,什么都没留下…
展开
-
【JavaScript学习】ECMAScript数据类型
基本介绍ECMAScirpt 5。1中定义了6种数据类型,其中有5中简单数据类型(基本数据类型):Undefined:只有一个值,为undefined,意味着“空值(no value)”,适用于所有数据类型。Null:只有一个值,为null,意味着“空对象(no object)”,只适用于对象类型。(literal)Boolean:有两个值,为true与falseNumber:值原创 2017-07-19 16:00:28 · 687 阅读 · 0 评论 -
【JavaScript学习】检测类型
typeof:检测基本数据类型确定一个变量是字符串、数值、布尔值还是undefined。如果变量的值是一个对象或null,则返回“object”。var s = "Nicholas";var b = true;var i = 22;var u;var n = null;var o = new Object():typeof s; //stringtypeof b; //boolean原创 2017-07-20 11:34:32 · 322 阅读 · 0 评论 -
【JavaScript学习】注意JavaScript没有块级作用域
例如:if(true){ var color = "blue";}console.log(color);这里会在控制台输出“blue”。 如果在C、C++或Java中,color会在if语句执行完毕之后被销毁。 但是在JavaScript中,这个if语句在全局环境中,那么通过var声明的变量也会加到当前的执行环节(即全局环境)中。 还需要注意的是:for( var i =0; i原创 2017-07-20 16:46:13 · 238 阅读 · 0 评论 -
【JavaScript学习】引用类型
1、引用类型的对象是引用类型的一个实例。 2、引用类型是一种数据结构,用于将数据和功能组织在一起。 3、引用类型也被称为对象定义,因为它们描述的是一类对象所具有的属性和方法。新对象是使用new操作符后跟一个构造函数来创建。var person = new Object();原创 2017-07-20 17:07:45 · 218 阅读 · 0 评论 -
【JavaScript学习】Object类型
创建Object实例的方法:1、使用new操作符后跟Object构造函数var person = new Object();person.name = "Nicholas";person.age = 29;2、使用对象字面量表示法。var person = { name : "Nicholas", age : 29};另外,使用对象字面量语法,若留空花括号,则可定义只包含默认属原创 2017-07-20 17:27:50 · 261 阅读 · 0 评论 -
【JavaScript学习】Array类型
ECMAScript中的数组与其他多数语言的数组有很大的区别。 1、ECMAScript数组的每一项可以保存任何类型的数据。 2、ECMAScript数组的大小可以动态调整,即可以随数据的添加自动增长以容纳新增数据。创建数组的基本方式: 1、使用Array构造函数。var colors = new Array();var colors = new Array(20); //创建lengt原创 2017-07-22 11:08:54 · 540 阅读 · 0 评论 -
【JavaScript学习】Date类型
创建一个日期对象:var now = new Date();调用Date构造函数而不传递参数,则新创建的对象自动获得当前日期和时间。 如果想根据特定的日期和时间创建日期对象,则需传入表示该日期的毫秒数(即从UTC时间1970年1月1日午夜起至该日期止经过的毫秒数)。 ECMAScript为简化此过程提供了两种方法: Date.parse(): param:表示日期的字符串参数 return原创 2017-08-02 18:07:52 · 422 阅读 · 1 评论 -
【JavaScript学习】RegExp类型
创建正则表达式字面量形式var expression = / pattern / flags;其中,模式(pattern)部分可以是任何简单或复杂的正则表达式,可以包含字符类、限定符、分组、向前查找以及反向引用。每个正则表达式都可带有一或多个标志(flags),用来标明正则表达式行为。 pattern支持下列3个标志:g:表示全局(global)模式,即模式将被应用于所有字符串,而非发现第一个匹原创 2017-09-04 17:16:53 · 318 阅读 · 0 评论 -
【JavaScript学习】Function类型
函数实际上是对象。 函数名是指向函数的指针。 使用不带圆括号的函数名是访问函数指针,而非调用函数。函数定义函数声明语法function sum1(num1,num2){ return num1+num2;}函数表达式var sum = function(num1,num2){ return num1+num2;};使用Function构造函数var sum = ne原创 2017-09-13 10:43:23 · 429 阅读 · 0 评论 -
【JavaScript学习】基本包装类型
1.3个特殊的引用类型:Boolean、Number、String; 2.每个包装类型都映射到同名的基本类型; 2.在读取模式下访问基本类型值时,后台会创建一个对应的基本包装类型的对象,从而可以调用一些方法来操作这些数据。 3.引用类型与基本包装类型的主要区别就是对象的生存期。 使用new操作符创建的引用类型的实例,在执行流离开当前作用域之前都一直保存在内存中。而操作基本类型值的语句原创 2017-09-13 11:30:17 · 304 阅读 · 0 评论 -
【JavaScript学习】面向对象的程序设计(1)
属性类型数据属性数据属性包含一个数据值的位置。在这个位置可以读取和写入值。共有4个描述其行为的特性。[[Configurable]]:表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性。对于直接在对象上定义的属性,默认为true。[[Enumerabel]]:表示能否通过for-in循环返回属性。对于直接在对象上定义的属性,默认为true。[[原创 2017-09-27 16:14:45 · 255 阅读 · 0 评论 -
【JavaScript学习】面向对象的程序设计(2):创建对象
Object构造函数或对象字面量可以用来创建单个对象,但是有明显的缺点:使用同一个接口创建很多对象,会产生大量的重复代码。 因此,可以考虑使用设计模式来创建对象。工厂模式抽象了创建具体对象的过程。 在ECMAScript中无法创建类,开发人员就发明了一种函数,用函数来封装以待定接口创建对象的细节。function createPerson(name,age,job){ var o = n原创 2017-09-27 17:02:27 · 397 阅读 · 0 评论 -
【JavaScript学习】面向对象的程序设计(3):原型链继承
ECMAScript只支持实现继承(继承实际的方法),主要依靠原型链来实现。原型链基本思想:利用原型让一个引用类型继承另一个引用类型的属性和方法。function SuperType(){ this.property = true;}SuperType.prototype.getSuperValue = function(){ return this.property;};fu原创 2017-09-28 16:28:07 · 249 阅读 · 0 评论 -
【JavaScript学习】面向对象的程序设计(4):借用构造函数(经典继承)
基本思想在子类型构造函数的内部调用超类型构造函数。使用apply()和call()方法可以在(将来)新创建的对象上执行构造函数。function SuperType(){ this.color=["red","blue","green"];}function SubType(){ //继承了SuperType SuperType.call(this);}var insta原创 2017-09-29 10:42:19 · 313 阅读 · 0 评论 -
【JavaScript学习】面向对象的程序设计(5):组合继承(伪经典继承)
基本思想将原型链和借用构造函数的技术组合到一块。 使用原型链实现对原型属性和方法的继承,通过借用构造函数实现对实例属性的继承。function SuperType(name){ this.name = name; this.colors = ["red","blue","green"];}SuperType.prototype.sayName = function () {原创 2017-09-29 11:01:07 · 317 阅读 · 0 评论 -
【JavaScript学习】面向对象的程序设计(6):原型式继承
基本思想:借助原型可以基于已有的对象创建新对象,同时还不必创建自定义类型。function object(o){ function F(){} F.prototype = o; return new F();}在object()函数内部,先创建了一个临时性的构造函数,然后将传入的对象作为这个构造函数的原型,最后返回了这个临时类型的一个新实例。var person ={原创 2017-09-29 11:23:36 · 267 阅读 · 0 评论 -
【JavaScript学习】面向对象的程序设计(7):寄生式继承和寄生组合式继承
寄生式继承基本思路创建一个仅用于封装继承过程的函数,该函数在内部以某种方式来增强对象,最后再像真的是它做了所有工作一样返回对象。function createAnother(original){ var clone = Object(original); //通过调用函数创建一个新对象 clone.sayHi = function(){ alert("hi")原创 2017-09-30 09:20:20 · 290 阅读 · 0 评论 -
【JavaScript学习】函数表达式:闭包
定义函数的方法:Function类型匿名函数——function关键字后面没有标识符的函数。 闭包——有权访问另一个函数作用域中的变量的函数。//创建闭包的方法:在一个函数内部创建另一个函数。function createComparisonFunction(propertyName){ return function (object1,object2) { var va原创 2017-09-30 10:05:33 · 306 阅读 · 0 评论 -
【JavaScript学习】函数表达式:模仿块级作用域
1、JavaScript没有块级作用域的概念。 2、在块语句中定义的变量,实际上是在包含函数中而非语句中创建的。 3、JavaScript中多次声明同一变量不会出错,它只会对后续的声明视而不见,但是会执行后续声明中的变量初始化。匿名函数可以模仿块级作用域。//用作块级作用域(通常称为私有作用域)的匿名函数的语法(function(){ //块级作用域})();上面代码定义并立即调用了原创 2017-09-30 16:58:23 · 353 阅读 · 0 评论 -
【JavaScript学习】函数表达式:私有变量
1、任何在函数中定义的变量,都可以认为是私有变量,不能在函数外部访问这些变量。 2、私有变量包括:函数的参数、局部变量、在函数内部定义的其他函数。在函数内部创建一个闭包,那么闭包通过自己的作用域链可以访问私有变量。 特权方法:有权访问私有变量和私有函数的公有方法。在构造函数中定义特权方法function MyObject(){ //私有变量和私有函数 var privateV原创 2017-10-09 10:15:40 · 330 阅读 · 0 评论 -
【JavaScript学习】BOM:location对象
BOM:浏览器对象模型1、location是最有用的BOM对象之一。 2、用途:提供了与当前窗口中加载的文档有关的信息,还提供一些导航功能。 3、location对象:既是window对象的属性,也是document对象的属性。(即window.location和document.location引用的是同一个对象)location对象保存着当前文档的信息,还将URL解析为独立...原创 2017-10-09 16:57:32 · 319 阅读 · 0 评论 -
【JavaScript学习】BOM:navigator对象
1、navigator:识别客户端浏览器的事实标准。 2、所有支持JavaScript的浏览器都有navigator对象。Navigator 对象属性 属性 描述 例子 appCodeName 浏览器的代码名。 Mozilla appName 完整的浏览器名称。 Netscape appVersion 浏览器的平台和版本信...原创 2017-10-26 17:35:13 · 329 阅读 · 0 评论 -
【JavaScript学习】BOM:screen对象
1、每个 Window 对象的 screen 属性都引用一个 screen 对象。 2、screen 对象中存放着有关客户端显示屏幕的信息。 3、所有浏览器都支持 screen 对象。Screen 对象属性 Tables Are Cool col 3 is right-aligned $1600 col 2 is centered原创 2017-10-27 10:51:28 · 281 阅读 · 0 评论 -
【JavaScript学习】BOM:history对象
1、history对象保存用户上网的历史记录。 2、出于安全方面的考虑,开发人员无法得知用户浏览过的URL。但是可以在不知道实际URL的情况下实现后退和前进。 3、所有浏览器都支持history对象。 4、History 对象是 window 对象的一部分,可通过 window.history 属性对其进行访问。History 对象属性 属性 描述 length 保存历史记录的数原创 2017-10-27 16:44:09 · 305 阅读 · 0 评论 -
【JavaScript学习】超时调用和间歇调用
超时调用和间歇调用区别超时调用:在指定的时间过后执行代码。/** * setTimeout() * param: * param1——要执行的代码(可以是字符串,也可以是函数) * param2——以毫秒表示的时间(即在执行代码前需要等待多少毫秒) */ //不建议传递字符串,传递字符串可能会导致性能损失 setTimeout("alert('hello world')",1000);原创 2017-10-27 20:34:09 · 423 阅读 · 0 评论 -
【JavaScript学习】JS类型转换
有一道面试题是: 实现一个函数,运算结果可以满足如下预期结果: add(1)(2) //3 add(1,2,3)(10) //16 add(1)(2)(3)(4)(5) //15其中一种解法:function add(){ console.log("进入add"); var args = Array.prototype.slice.c原创 2017-10-30 10:14:53 · 316 阅读 · 0 评论 -
【JavaScript学习】DOM:节点层次
DOM(文档对象模型)是针对HTML和XML文档的一个API原创 2017-11-20 09:37:41 · 279 阅读 · 0 评论 -
【JavaScript学习】DOM:Node类型
DOM1级定义了一个Node接口,该接口由DOM中的所有节点类型实现。这个Node接口在JavaScript中作为Node类型实现的;除了IE之外,其他所有浏览器中都可以访问这个类型。JavaScript中所有的节点类型都继承自Node类型,因此所有节点类型都共享着相同的基本属性和方法。 每个节点都有一个nodeType属性,用于表明节点的类型。节点类型由在Node类型中定义的下列12个数值原创 2017-11-16 11:02:57 · 344 阅读 · 0 评论 -
【JavaScript学习】DOM:Document类型
1、在浏览器中,ducument对象是HTMLDocument(继承至Document类型)的一个实例,表示整个HTML页面。 2、document对象是window对象的一个属性,因此可以将其作为全局对象来访问。document节点特征nodeType的值是9;nodeName的值为“#document”;nodeValue的值为null;parentNode的值为null原创 2017-11-20 11:03:45 · 286 阅读 · 0 评论 -
【JavaScript学习】DOM:Element类型
Element类型用于表现XML或HTML元素,提供了对元素标签名、子节点及特性的访问。Element节点特征nodeType的值是1;nodeName的值为元素的标签名;nodeValue的值为null;parentNode的值可能是Document或Element;ownerDocument的值为null;其子节点可能是Element、Text、Comment、Proc原创 2017-11-20 21:38:16 · 410 阅读 · 0 评论 -
【JavaScript学习】DOM:Text类型
文本节点由Text类型表示,包含的是可以照字面解释的纯文本。纯文本中可以包含转义后的HTML字符,但不能包含HTML代码。Text节点特征nodeType的值是3;nodeName的值为“#text”;nodeValue的值为节点所包含的文本;parentNode是一个Element;不支持(没有)子节点。可以通过nodeValue属性或data属性访问Text节点中包含的文本,这两个属原创 2017-11-21 10:31:11 · 397 阅读 · 0 评论 -
【JavaScript学习】DOM:Comment类型
注释在DOM中是通过Comment类型来表示。Comment节点特征nodeType的值是8;nodeName的值为“#comment”;nodeValue的值是注释的内容;parentNode可能是一个Document或Element;不支持(没有)子节点。Comment类型与Text类型继承自相同的基类,因此它拥有除splitText()之外的所有字符串操作方法。也原创 2017-11-21 19:56:51 · 541 阅读 · 0 评论 -
【JavaScript学习】DOM:CDATASection类型
1、CDATASection类型只针对基于XML的文档,表示的是CDATA区域。 2、CDATASection类型继承自Text类型,因此拥有除splitText()之外的所有字符串操作方法。CDATASection节点特征nodeType的值是4;nodeName的值为“#cdata-section”;nodeValue的值是CDATA区域中的内容;parentNode可能原创 2017-11-21 19:57:12 · 387 阅读 · 0 评论 -
【JavaScript学习】DOM:DocumentType类型
DocumentType类型在Web浏览器中不常用,只有Firefox、Safari和Opera支持它。 DocumentType包含着与文档的doctype有关的所有信息。DocumentType节点特征nodeType的值是10;nodeName的值为doctype的名称;nodeValue的值为null;parentNode是一个Document;不支持(没有)子节点原创 2017-11-21 19:57:35 · 1152 阅读 · 0 评论 -
【JavaScript学习】DOM:DocumentFragment类型
1、所有的节点类型中,只有documentFragment在文档中没有对应的标记。 2、DOM规定文档片段(document fragment)是一种“轻量级”的文档,可以包含和控制节点,但不会像完整的文档那样占用额外的资源。DocumentFragment节点特征nodeType的值是11;nodeName的值为“#document-fragment”;nodeValue的值为null;原创 2017-11-21 19:57:52 · 377 阅读 · 0 评论 -
【JavaScript学习】DOM:Attr类型
1、表示元素的特性。在所有浏览器(包括IE8),都可以访问Attr类型的构造函数和原型。 2、特性就是存在于元素的attribute属性中的节点。Attr节点特征nodeType的值是2;nodeName的值是特性的名称;nodeValue的值是特性的值;parentNode的值为null;在HTML中不支持(没有)子节点;在XML中子节点可以是Text或EntityReference原创 2017-11-21 20:23:36 · 642 阅读 · 0 评论 -
【JavaScript学习】DOM操作技术
动态脚本定义:页面加载时不存在,但将来的某一时刻通过修改DOM动态添加的脚本。 创建动态脚本有两种方法:插入外部文件直接插入JavaScript代码插入外部文件var script = document.createElement("script");script.type = "text/javascipt";script.src = "client.js";document.bod原创 2017-11-22 10:08:17 · 401 阅读 · 0 评论 -
【JavaScript学习】DOM扩展:选择符API
Selectors API是由W3C发起制定的一个标准,致力于让浏览器原生支持CSS查询。 selectors API Level 1 的核心方法是两个:querySelector()querySelectorAll()在兼容的浏览器中,可以通过Document及Element类型的实例调用它们。 目前已完全支持Selectors API Level 1 的浏览器由IE 8+、Firef原创 2017-11-22 10:34:14 · 267 阅读 · 0 评论 -
【JavaScript学习】事件:事件流
1、JavaScript和HTML之间的交互通过事件实现的。 2、事件流描述的是从页面中接收事件的顺序。 3、IE 和 Netscape开发团队提出了差不多完全相反的事件流的概念。 4、IE 的事件流是事件冒泡流,而 Netscape 的事件流是事件捕获流。事件冒泡思想: 事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播到较为不具体的节点(文档)。<!DOCTY原创 2017-11-22 16:55:39 · 340 阅读 · 0 评论 -
【JavaScript学习】事件:事件处理程序
1、事件就是用户或浏览器自身执行的某种动作。 2、事件处理程序(或事件监听器)就是响应某个事件的函数。HTML事件处理程序//HTML中定义的事件处理程序包含要执行的具体动作//这个值是JavaScript,所以不能再其中使用未经转义的HTML语法字符,例如& "" < ><input type="button" value="确定" onclick="alert('clicked')" />原创 2017-11-23 10:18:20 · 333 阅读 · 0 评论