js没有块级作用域(题外话:函数可以作为一个块级),所以我们经常使用闭包来模拟块级作用域,以避免变量或者函数因为名称相同而产生的冲突. 重点来了: 所以,如果我们把哪个变量或者函数放在全局作用域中,那就说明它不会产生冲突.不会产生冲突的原因是因为只有一个对象调用它,别的都不会调用它. 所以得出结论: 在全局作用域中定义的函数实际上只 能被某个对象调用…
js高级程序设计笔记之-addEventListener()与removeEventListener(),事件解除与绑定 addEventListener()与removeEventListener()用于处理指定事件和删除事件处理程序.所有的DOM节点中都包含这两种方法,并且它们都接受3个参数:要处理的事件名.作为事件处理程序的函数和一个布尔值.这个布尔值参数是true,表示在捕获阶段调用事件处理程序:如果是false,表示在冒泡阶段调用事件处理程序. 要在按钮上为click事件添加事件处理程…
今天在继续翻阅<JS高级程序设计>的时候,正好翻到location对象这一小节,其中有一部分就是讲的解析查询字符串.看到这个内容立马想到了做去哪儿秋招笔试题的时候有这么一道题. 去哪儿笔试没有过自己还是一直都挺心塞的,可能当时也写得不好吧,现在看到这个内容赶紧记下来. 函数的功能就是为了能逐个访问每个查询字符串参数,返回一个包含所有参数的对象. function getQueryStringArgs(){ //利用location.search属性先提取出URL中的查询字符串,这个字符串包含&…
读书笔记 - js高级程序设计 - 第十三章 事件   canvas 具备绘图能力的2D上下文 及文本API 很多浏览器对WebGL的3D上下文支持还不够好   有时候即使浏览器支持,操作系统如果缺缺乏必要的绘图驱动程序,则浏览器即使支持了也没用   <canvas> var drawing = document.getElementById("drawing"); if( drawing.getContext ){     drawing.getContext("…
server.jsvar connect=require('connect');serveStatic=require('serve-static');var app=connect();app.use(serveStatic("../angularjs"));app.listen(5000);运行server.js没反应,localhost:5000/test.html显示cant get test/html angular.js高级程序设计书本开头配置环境出错,谁能给解答一下 &g…
ECMA-262 把对象定义为:“无序属性的集合,其属性可以包含基本值.对象或者函数.”严格来讲,这就相当于说对象是一组没有特定顺序的值.对象的每个属性或方法都有一个名字,而每个名字都映射到一个值.正因为这样(以及其他将要讨论的原因),我们可以把ECMAScript 的对象想象成散列表:无非就是一组名值对,其中值可以是数据或函数.每个对象都是基于一个引用类型创建的,这个引用类型可以是第5 章讨论的原生类型,也可以是开发人员定义的类型. 理解对象 创建自定义对象的最简单方式就是创建一个Object…
事件流 冒泡 定义:事件开始时由最具体的元素接收,然后逐级上传到较为不具体的节点.(IE9.FF.Chrome.Safari会将事件一直冒泡到window对象.IE5.5及其以下会跳过<html>元素,直接从body跳到document).若发生事件的节点元素并没有绑定该事件,则这个动作会向上冒泡,直到被执行,一直冒泡到window对象. 阻止冒泡:①使用stoppropagation() ②在函数中进行一次判断,if(event.target==event.current.target){f…
window 对象 BOM 的核心对象是window,它表示浏览器的一个实例.在浏览器中,window 对象有双重角色,它既是通过JavaScript 访问浏览器窗口的一个接口,又是ECMAScript 规定的Global 对象.这意味着在网页中定义的任何一个对象.变量和函数,都以window 作为其Global 对象,因此有权访问parseInt()等方法. 全局作用域 由于window 对象同时扮演着ECMAScript 中Global 对象的角色,因此所有在全局作用域中声明的变量.函数都会…
定义函数的方式有两种:一种是函数声明,另一种就是函数表达式.函数声明的语法是这样的. function functionName(arg0, arg1, arg2) { //函数体 } Firefox.Safari.Chrome和Opera 都给函数定义了一个非标准的name 属性,通过这个属性可以访问到给函数指定的名字.这个属性的值永远等于跟在function 关键字后面的标识符. //只在Firefox.Safari.Chrome 和Opera 有效 alert(functionName.n…
Object类型 创建Object 实例的方式有两种.第一种是使用new 操作符后跟Object 构造函数. var person = new Object(); person.name = "Nicholas"; person.age = 29; 另一种方式是使用对象字面量表示法.对象字面量是对象定义的一种简写形式,目的在于简化创建包含大量属性的对象的过程. var person = { name : "Nicholas", age : 29 }; 在这个例子中,…
第二章 1.为了避免浏览器在呈现页面时出现明显的延迟,现代Web 应用程序一般都把全部JavaScript 引用放在<body>元素中页面内容的后面. 第三章 1.ECMAScript 中有5 种简单数据类型(也称为基本数据类型):Undefined.Null.Boolean.Number 和String.还有1 种复杂数据类型——Object. 2.位于null 和undefined 之间的相等操作符(==)总是返回true. 3.alert(NaN == NaN); //false 4.有…
看一个简单的例子: html: <head> <meta charset="UTF-8"> <title>Document</title> <script src="test.js"></script> </head> <body> <a href="#" id="test" class="link test tes…
在ES5中,顶层对象的属性和全局变量是等价的,var 命令和 function 命令声明的全局变量,自然也是顶层对象. var a = 12; function f(){}; console.log(window.a); // console.log(window.f); // f(){} 但ES6规定,var 命令和 function 命令声明的全局变量,依旧是顶层对象的属性,但 let命令.const命令.class命令声明的全局变量,不属于顶层对象的属性. let aa = 1; cons…
<JavaScript高级程序设计(第三版)>反反复复看了好多遍了,这次复习作为2017年上半年的最后一次,将所有模糊的.记不清的地方记录下来,方便以后巩固. 0. <script>元素属性 async表示立即下载脚本,但不应该妨碍页面中其他操作: defer表示延迟到文档完全被解析和显示之后再执行.这两个属性都仅适用于外部脚步,而且现实中脚步不一定按顺序执行.指定async属性的目的是不让页面等待脚本下载和执行. 最好只包含一个延迟脚本,把延迟脚本放在页面最底部仍然是最佳选择.…
JS Regexp 字面量模式 用\反斜杠转义 构造函数中的字符串 也用\转义正则也用\ RegExp实例属性 global -布尔值  /g ignoreCase -布尔值 /i lastIndex -整数 表示开始搜索下一个匹配项的字符位置,从0算起. multiline -布尔值 /m source -正则表达式的字符串 RegExp实例方法 exec() 接受一个参数(要应用模式的字符串) ,然后返回包含第一个匹配信息的数组,没匹配近回null,返回的数组包含两个额外的属性:index…
数据类型 ECMAscript中有五种简单数据类型Undefined,Null,Boolean,Number,String 还有一种复杂数据类型Object. typeof操作符 typeof可能返回下列某个字符串 undefined--------------如果这个值未定义 boolean----------------如果这个值是布尔值 string------------------如果这个值是字符串 number----------------如果这个值是数值 object------…
一. 事件流 1. 事件流描述的是从页面中接收事件的顺序 2. 事件冒泡(event bubble):事件从开始时由最具体的元素(就是嵌套最深的那个节点)开始,逐级向上传播到较为不具体的节点(就是Document) <!doctype html> <html> <head> <title>事件冒泡</title> </head> <body> <div id = 'myDiv'> 点击这里 </div&g…
一.语法: 区分大小写; 2.标识符:就是指变量.函数.属性的名字,或者函数的参数 a.标志符的规则:①第一个字符必须是一个字母.下划线(_)或一个美元符号($).                   ②其他字符可以是字母,下划线,美元符号或者数字. b.标志符采用驼峰大小写格式. c.严格模式:在顶部添加以下代码:"use strict"; d.语句:结尾加入分号.在控制语句中使用代码块为最佳实践. 二.关键字与保留字 三.变量:ECMAScript的变量是松散类型,可以保存任何类型…
ecma:欧洲计算机制造商协会iso/iec:国际标准化和国际电工委员会 dom级别(10*)文档对象模型1:DOM核心(映射基于xml文档)与dom html(在dom核心基础上)2:对鼠标,事件,范围,遍历,还有对css样式表的支持dom2:新接口...视图,事件(鼠标,移动),样式(css),遍历与范围(对文档树的操作)3:对文档加载和保存,验证模块,对核心进行扩展,对xml.0规范其他domsvg可伸缩矢量图mathml数学标记语言mghi同步多媒体集成语言ie5 dom1mozilla…
1.JS分三个部分:ECMAScript.DOM.BOM       1)ECMAScript:提供核心语言功能       2)DOM:提供访问和操作网页内容的方法和接口       3)BOM:提供与浏览器交互的方法和接口 2.在html页面写js代码,需要将代码放在<script></script>:并且中间不能出现字符串“</script>”       下方这个代码会报错:alert("</script>");        可…
面向对象 ,基本模式.对象字面量模式.工厂模式.构造函数模式.原型模式.组合构造函数和原型模式.其他模式见电子书:动态原型模式.寄生构造函数模式(不推荐).稳妥构造函数模式(要求安全的环境,不使用new 和 this) //面向对象 /* [ 数据属性] * configurable true 通过 delete删除属性来修改属性 * enumberable true 通过 for-in 返回属性 * writable true 修改属性值 * value 数据值 * es5 通过 Object…
defer 异步脚本,脚本延迟到文档完全被解析和显示之后再执行.只对外部脚本文件有效.按顺序执行脚本.但在实际情况下,并不一定会按照顺序执行最好只有一个延迟脚本.支持H5的浏览器会忽略给脚本设置 defer 属性async 异步脚本,不保证按脚本的先后顺序执行.异步脚本一定会在页面的Load事件前执行. IE10+支持严格模式 function test (){ a = 12; //没有var, a 是全局变量, 不推荐 严格模式下会报错 ”use strict" } test(); conso…
1在将一个值赋给变量时,解析器必须确认这个值是基本类值还是引用类型值,基本类型值是按值访问的,可以操作保存在在变量中的实际值,引用类型是保 存在内存中的对象,JS不允许直接访问内存中的位置,所以实际操作的是对象的引用而不是实际对象.(当复制保存这对象的某个变量时,操作的是对象的引用,但是为对象添加属性的时候,操作的却是实际对象). 2"JS一切皆对象",当然了简单值就不是对象.对象就是若干属性的集合,所以说对象只有属性,没有方法.其实方法也是属性,因为他的属性表现为键值对,对象可以随意…
javascript产生的原因: 在拨号上网时代,表单数据必须发送到服务器端才能验证输入值得有效性,JavaScript的研发就是为了解决这个问题,以便在客户端就验证输入值的有效性. ECMAScript/JavaScript: JavaScript是Netscape公司于1995年发布的脚本语言,ECMAScript是欧洲计算机制造商协会定义的一种通用.跨平台.供应商中立的脚本语言的语法和语义. 一个完整的JavaScript实现包含: 核心(ECMAScript):由ECMA-262定义,提…
一,变量和作用域 1, js变量可以保存两种类型,基本类型.引用类型和symbol类型,基本类型有5种:undefined.null.boolean.number.string,它们都有以下的特征 基本类型在内存中占据固定大小的空间,因此被保存在栈内存中 从一个变量向另一个变量复制基本类型的值,会创建这个值的一个副本 引用类型的值是对象,保存在堆内存中 包含引用类型的变量只是一个指向该对象的指针 复制引用类型,只是复制了指针,其实两个变量都指向同一个对象. 确定基本类型的种类可以使用typeof…
前言:纯手打!!!按照自己思路重写!!!这次是二刷了,想暑假做一次完整的笔记,但用本子来写笔记的话太贵了,可能哪天还丢了..所以还是博客好== 第四章:变量.作用域和内存问题 4.1 基本类型和引用类型的值: ECMAScript变量可能包含两种不同数据类型的值:基本类型值和引用类型值. 基本类型值: 指的是简单的数据段. 类型:Undefined.Null.Boolean.Number.String.这五种基本数据类型是按值访问的,因为可以操作保存在变量中的实际的值. 在内存中占据固定大小的空…
基本类型和引用类型的值 ECMAScript 变量可能包含两种不同数据类型的值:基本类型值和引用类型值.基本类型值指的是 Undefined . Null . Boolean . Number 和 String,而引用类型值指那些可能由多个值构成的对象.基本数据类型是按值访问的,引用类型的值是按引用访问的. 动态的属性 对于引用类型的值,我们可以为其添加属性和方法,也可以改变和删除其属性和方法. var person = new Object(); person.name = "Nicholas…
创建正则表达式: 字面量形式定义正则表达式: Var expression = / pattern /flags ;pattern部分可以使任意简单或复杂的正则表达式.每个正则表达式可以带有一个或多个标志. 标志为:①g,表示全局模式.②i,表示不区分大小写.③m,表示多行模式 正则表达式的元字符包括:( [ { \ ^ $ | ? * + . } ] ).注意:模式中使用的所有元字符必须经过转义(使用 \ 符号). 使用RegExp构造函数: Var pattern = new RegExp(…
安全的类型检测 function isArray(value){ return Object.prototype.toString.call(value) === "[object Array]"; } function isFunction(value){ return Object.prototype.toString.call(value) === "[object Function]"; } //检测原生JSON对象 function isRegExp(va…
ES3方法集合: 1join()方法,将一个数组里面的所有元素转换成字符串,然后再将他们连接起来返回一个字符串,通过制定的符号,默认值为逗号.不会改变原数组 ,,,,]; a.join(); "1,2,3,4,5" typeof (a.join()); "string" typeof a "object" 2reverse()方法对数组顺序进行反转,会改变原本的数组. ,,,,]; a.reverse(); [, , , , ] a [, , ,…