document.getElementById(id) 用来访问某个HTML元素:用id属性标识
文档已完成加载后执行 document.write,整个 HTML 页面将被覆盖
项目命名:全部采用小写,以下滑线分割
JS文件命名:
基本数据类型
引用数据类型
对象
name = person.fullName();
创建对象方法
methodName : function() {
// 代码
}
访问对象的方法
objectName.methodName()
由事件驱动的或者当它被调用时执行的可重复使用的代码块
function *functionname*()
{
*// 执行代码*
}
操作符*
在调用函数时,您可以向其传递值,这些值被称为参数
将值返回调用它的地方
在使用 return 语句时,函数会停止执行,并返回指定的值。
JavaScript使用Unicode字符集
可访问变量的集合
对象和函数也是变量
局部变量是在函数内部声明的变量,会在函数运行以后被删除。
*函数参数只在函数内起作用,*是局部变量
全局变量是在函数外声明的变量,会在页面关闭后被删除。如果对象没有声明则为全局变量
你的全局变量,或者函数,可以覆盖 window 对象的变量或者函数。
局部变量,包括 window 对象可以覆盖全局变量和函数
当在 HTML 页面中使用 JavaScript 时, JavaScript 可以触发这些事件。
检测变量的数据类型
constructor属性
返回所有JavaScript变量的构造函数
只有一个值的特殊类型,表示一个空对象引用
一个没有设置值的变量
typeof一个没有值的变量会返回undefined
任何变量可以通过设置值为undefined来清空
null和undefined的值相等,类型不同
通过**Number()**转换为数字
通过**String()**转换为字符串
通过**Boolean()**转换为布尔值
自动转换类型:当 JavaScript 尝试操作一个 “错误” 的数据类型时,会自动转换为 “正确” 的数据类型
NaN 的数据类型是 number
数组(Array)的数据类型是 object
日期(Date)的数据类型为 object
null 的数据类型是 object
未定义变量的数据类型为 undefined
由一个字符序列形成的搜索模式
/正则表达式主体/修饰符(可选)
修饰符可以在全局搜索中不区分大小写
try { ... //异常的抛出 } catch(e) { ... //异常的捕获与处理 } finally { ... //结束处理 }
finall语句
不论之前的 try 和 catch 中是否产生异常都会执行该代码块。
JavaScript中,变量先使用后声明,后使用先声明将获得相同的结果
通过在脚本或函数的头部添加 ”use strict“; 表达式来声明。
服务端数据验证是在数据提交到服务器上后再验证。
客户端数据验证是在数据发送到服务器前,在浏览器上完成验证。
HTML 约束验证基于:
HTML5 新增了 HTML 表单的验证方式:约束验证(constraint validation)。
约束验证DOM方法
let 声明的变量只在 let 命令所在的代码块内有效。
const 声明一个只读的常量,一旦声明,常量的值就不能改变。
let只在 let 命令所在的代码块 {} 内有效。
let 关键字, 它声明的变量作用域只在循环体内,循环体外的变量不受影响。
const定义常量与使用let 定义的变量相似:
两者还有以下两点区别:
const并非真正的常量。使用 const 定义的对象或者数组,其实是可变的。
JSON 是用于存储和传输数据的格式。
JSON 通常用于服务端向网页传递数据 。
该操作符指定要计算一个表达式但是不返回值
# 包含了一个位置信息,默认的锚是**#top** 也就是网页的上端。
而javascript:void(0), 仅仅表示一个死链接。
异步与同步是相对概念
同步按你的代码顺序执行,异步不按照代码顺序执行,异步的执行效率更高。
是一个类,目的是更加优雅地书写复杂的异步任务。
Promise 构造函数只有一个参数,是一个函数,这个函数在构造之后会直接被异步运行,所以我们称之为起始函数。起始函数包含两个参数 resolve 和 reject。
使用关键字function定义函数
函数可以通过声明定义,也可以是一个表达式
分号是用来分隔可执行JavaScript语句。
由于函数声明不是一个可执行语句,所以不以分号结束。
可以通过内置的 JavaScript 函数构造器(Function())定义。
var myFunction = function (a,b) {return a*b};
var x = myFunction(4,3);
JavaScript默认将当前作用域提升到前面去的行为
JavaScript函数有属性和方法
arguments.length属性返回函数调用过程接受到的参数个数
function myFunction(a, b) { return arguments.length; }
**toString()**方法将函数作为一个字符串返回
箭头函数表达式的语法比普通函数表达式更简洁
``
(参数1, 参数2, …, 参数N) => {
函数声明 }
(参数1, 参数2, …, 参数N) => 表达式(单一)
// 相当于:(参数1, 参数2, …, 参数N) =>{ return 表达式; }
当我们使用箭头函数的时候,箭头函数会默认帮我们绑定外层 this 的值,所以在箭头函数中 this 的值和外层的 this 是一样的。
箭头函数是不能提升的,所以需要在使用之前定义。
使用 const 比使用 var 更安全,因为函数表达式始终是一个常量。
如果函数部分只是一个语句,则可以省略 return 关键字和大括号 {},这样做是一个比较好的习惯:
函数显式参数在函数定义时列出
functionName(parameter1,parameter2, parameter3) {
// 要执行的代码……
}
函数隐式参数在函数调用时传递给函数真正的值
undefined
JavaScript 函数有个内置的对象 arguments 对象。
argument 对象包含了函数调用的参数数组
私有变量可以用到闭包
变量声明时如果不使用 var 关键字,那么它就是一个全局变量,即便它在函数内定义。
在 JavaScript 中,所有函数都能访问它们上一层的作用域。
JavaScript 支持嵌套函数。嵌套函数可以访问上一层的函数变量。
闭包是一种保护私有变量的机制,在函数执行时形成私有的作用域,保护里面的私有变量不受外界干扰。直观的说就是形成一个不销毁的栈环境。
HTML DOM 元素节点
添加和删除节点(HTML 元素)
onload 和 onunload 事件会在用户进入或离开页面时被触发。
onload 事件可用于检测访问者的浏览器类型和浏览器版本,并基于这些信息来加载网页的正确版本。
onload 和 onunload 事件可用于处理 cookie。
onchange 事件常结合对输入字段的验证来使用。
用于在用户的鼠标移至 HTML 元素上方或移出元素时触发函数。
onmousedown, onmouseup 以及 onclick 构成了鼠标点击事件的所有部分。首先当点击鼠标按钮时,会触发 onmousedown 事件,当释放鼠标按钮时,会触发 onmouseup 事件,最后,当完成鼠标点击时,会触发 onclick 事件。
addEventListener() 方法用于向指定元素添加事件句柄。
addEventListener() 方法添加的事件句柄不会覆盖已存在的事件句柄。
移除由addEventListener()方法添加的事件句柄
要创建新的 HTML 元素 (节点)需要先创建一个元素,然后在已存在的元素中添加它。
*appendChild()*方法,它用于添加新元素到尾部。
如果我们需要将新元素添加到开始位置,可以使用 insertBefore() 方法:
要移除一个元素,你需要知道该元素的父元素。
所有事物都是对象
对象只是一种特殊的数据,对象拥有属性和方法
objectName.propertyName
例子
var message="Hello World!";
var x=message.length;
执行得12
objectName.methodName()
例子
var message="Hello world!";
var x=message.toUpperCase();
执行得HELLO WORLD!
Object 构造函数,会根据给定的参数创建对象,具体有以下情况:
语法格式
new object([value])
value可以是任何值
,
隔开{ name1 : value1, name2 : value2,...nameN : valueN }
实例
person:{firstname:"John",lastname:"Doe",age:50,eyecolor:"blue"};
function person(firstname,lastname,age,eyecolor) { this.firstname=firstname; this.lastname=lastname; this.age=age; this.eyecolor=eyecolor; }
var myFather=new person("John","Doe",50,"blue");
var myMother=new person("Sally","Rally",48,"green");
您可以通过为对象赋值,向已有对象添加新属性:
假设 person 对象已存在 - 您可以为其添加这些新属性:firstname、lastname、age 以及 eyecolor:
person.firstname="John";
person.lastname="Doe";
person.age=30;
person.eyecolor="blue";
x=person.firstname;
结果得John
方法只不过是附加在对象上的函数。
JavaScript不适用类
遍历对象的属性
语法
for (variable in object)
{
执行的代码……
}
for…in 循环中的代码块将针对每个属性执行一次
JavaScript的对象是可变的
所有的 JavaScript 对象都会从一个 prototype(原型对象)中继承属性和方法。
一个已存在的对象构造器中是不能添加新的属性的,要添加一个新的属性需要在在构造器函数中添加。
所有的 JavaScript 对象都会从一个 prototype(原型对象)中继承属性和方法:
Date
对象从 Date.prototype
继承。Array
对象从 Array.prototype
继承。Person
对象从 Person.prototype
继承。使用 prototype 属性就可以给对象的构造函数添加新的属性
例Person.prototype.nationality = "English";
JavaScript 数字可以使用也可以不使用小数点来书写
JavaScript 数字可以使用也可以不使用小数点来书写
所有数字都是由浮点型类型
整数(不使用小数点或指数计数法)最多为 15 位
小数的最大位数是 17,但是浮点运算并不总是 100% 准确
如果前缀为 0,则 JavaScript 会把数值常量解释为八进制数
如果前缀为 0 和 “x”,则解释为十六进制数
默认情况下,JavaScript 数字为十进制显示。
但是你可以使用 toString() 方法 输出16进制、8进制、2进制。
当数字运算结果超过了JavaScript所能表示的数字上限(溢出),结果为一个特殊的无穷大(infinity)值,
当负数的值超过了JavaScript所能表示的负数范围,结果为负无穷大,在JavaScript中以*-Infinity**表示*
NaN属性是代表非数字值的特殊值
数字可以私有数据进行初始化,就像 x = 123;
lastIndexOf() 方法在字符串末尾开始查找字符串出现的位置
match()函数用来查找字符串中特定的字符,并且如果找到的话,则返回这个字符
replace() 方法在字符串中用某些字符替换另一些字符
字符串大小写转换使用函数 toUpperCase() / toLowerCase()
字符串使用split()函数转为数组
Date 对象用于处理日期和时间
有四种方式初始化日期:
new Date();
new Date(value);
new Date(dateString);
new Date(year, monthIndex [, day [, hours [, minutes [, seconds [, milliseconds]]]]]);
使用针对日期对象的方法,我们可以很容易地对日期进行操作
if (x>today)
{
alert("今天是2100年1月14日之前");
}
数组对象的作用是:使用单独的变量名来存储一系列的值
var myCars=new Array();
myCars[0]="Saab"; myCars[1]="Volvo";
myCars[2]="BMW";
var myCars=new Array("Saab","Volvo","BMW");
var myCars=["Saab","Volvo","BMW"];
通过指定数组名以及索引号码,你可以访问某个特定的元素
以下实例可以访问myCars数组的第一个值:
var name=myCars[0];
以下实例修改了数组 myCars 的第一个元素:
myCars[0]="Opel";
可以在一个数组中包含对象元素、函数、数组
使用数组对象预定义属性和方法
var x=myCars.length // myCars 中元素的数量
var y=myCars.indexOf("Volvo") // "Volvo" 值的索引值
var myBoolean=new Boolean();
Math(算数)对象的作用是:执行常见的算数任务
document.write(Math.round(4.7));
document.write(Math.random());
document.write(Math.floor(Math.random()*11));
RegExp:是正则表达式(regular expression)的简写
正则表达式描述了字符的模式对象。
当您检索某个文本时,可以使用一种模式来描述要检索的内容。RegExp 就是这种模式。
var patt=new RegExp(pattern,modifiers);
或更简单的方法
var patt=/pattern/modifiers;
修饰符用于执行不区分大小写和全文的搜索。
i - 修饰符是用来执行不区分大小写的匹配。
g - 修饰符是用于执行全文的搜索(而不是在找到第一个就停止查找,而是找到所有的匹配)
test()方法搜索字符串指定的值,根据结果并返回真或假
exec() 方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null。
所有浏览器都支持 window 对象。它表示浏览器窗口。
所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。
全局变量是 window 对象的属性。
全局函数是 window 对象的方法。
确定浏览器窗口的尺寸
window.screen 对象包含有关用户屏幕的信息
window.screen对象在编写时可以不使用 window 这个前缀。
一些属性:
screen.availWidth 属性返回访问者屏幕的宽度,以像素计,减去界面特性
window.location对象用于获得当前页面的地址(URL),并把浏览器重定向到新的页面
window.location 对象在编写时可不使用 window 这个前缀。 一些例子:
一些实例:
location.hostname 返回 web 主机的域名
location.pathname 返回当前页面的路径和文件名
location.port 返回 web 主机的端口 (80 或 443)
location.protocol 返回所使用的 web 协议(http: 或 https:)
location.href 返回当前页面的 URL
**location.assign()**方法加载新的文档
window.history对象包含浏览器的历史
**history.back()**方法加载历史列表中的前一个URL
**history forward()**方法加载历史列表中的下一个URL
window.navigator 对象包含有关访问者浏览器的信息
可以在JavaScript中创建三种消息框:警告框、确认框、提示框
window.alert("*sometext*");
确认框通常用于验证是否接受用户操作
当确认卡弹出时,用户可以点击 “确认” 或者 “取消” 来确定用户操作。
当你点击 “确认”, 确认框返回 true, 如果点击 “取消”, 确认框返回 false。
window.confirm("*sometext*");
提示框经常用于提示用户在进入页面前输入某个值
当提示框出现后,用户需要输入某个值,然后点击确认或取消按钮才能继续操纵。
如果用户点击确认,那么返回值为输入的值。如果用户点击取消,那么返回值为 null。
window.prompt("*sometext*","*defaultvalue*");
弹窗使用 反斜杠 + “n”(\n) 来设置换行
alert("Hello\nHow are you?");
JavaScript 一个设定的时间间隔之后来执行代码,我们称之为计时事件
**setInterval()**间隔指定的毫秒数不停地执行指定的代码
window.setInterval("*javascript function*",*milliseconds*);
1000毫秒是一秒
实例
setInterval(function(){alert("Hello")},3000);
clearInterval() 方法用于停止 setInterval() 方法执行的函数代码
window.clearInterval(*intervalVariable*)
myVar= window.setTimeout("*javascript function*", *milliseconds*);
clearTimeout() 方法用于停止执行setTimeout()方法的函数代码
window.clearTimeout(*timeoutVariable*)
Cookie 用于存储 web 页面的用户信息
Cookie 以名/值对形式存储,如下所示:
username=John Doe
使用document.cookie属性来创建、读取、及删除cookie
document.cookie="username=John Doe";
document.cookie="username=John Doe; expires=Thu, 18 Dec 2043 12:00:00 GMT";
document.cookie="username=John Doe; expires=Thu, 18 Dec 2043 12:00:00 GMT; path=/";
var x = document.cookie;
document.cookie="username=John Smith; expires=Thu, 18 Dec 2043 12:00:00 GMT; path=/";
`document.cookie = “username=; expires=Thu, 01 Jan 1970 00:00:00 GMT”;
JavaScript库 - jQuery、Prototype、Moo Tools
所有这些框架都提供针对常见 JavaScript 任务的函数,包括动画、DOM 操作以及 Ajax 处理
为了引用某个库,请使用
主要的 jQuery 函数是 $() 函数(jQuery 函数)。如果您向该函数传递 DOM 对象,它会返回 jQuery 对象,带有向其添加的 jQuery 功能。
jQuery 允许您通过 CSS 选择器来选取元素。
为了引用某个库,请使用
Prototype 提供的函数可使 HTML DOM 编程更容易。
与 jQuery 类似,Prototype 也有自己的 $() 函数。
$() 函数接受 HTML DOM 元素的 id 值(或 DOM 元素),并会向 DOM 对象添加新的功能。
与 jQuery 不同,Prototype 没有用以取代 window.onload() 的 ready() 方法。相反,Prototype 会向浏览器及 HTML DOM 添加扩展。