JavaScript笔记
马士兵_Javascript_学习笔记_尚学堂_个人整理
先推荐一个学习网站建设的网站,我在学习的过程中受益颇多,不是广告,这网站确实好用:
www.w3school.com.cn
以前以为Javascript是Java的一个分支,结果不是,因为Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,因此取名为JavaScript。。这是两门不同的语言。JavaScript是一种直译式脚本语言。
其实学习这些前端知识不需要死记硬背,只要掌握基本知识,学会照猫画虎(截取网页并尝试模仿),多加练习就行了。
一、JavaScript和Java的区别
基于对象和面向对象
解释和编译
强变量和弱变量
JavaScript中变量声明,采用其弱类型。
即变量在使用前不需作声明,而是解释器在运行时检查其数据类型
x=1234; //数值型变量
y=“4321”; //字符型变量
代码格式不一样
嵌入方式不一样
二、JavaScript
JavaScript是一种描述式语言,它与HTML结合起来,用于增强功能,并提高与最终用于之间的交互性能
由Netscape公司利用Sun的Java开发
它是与Java完全不同的一种语言。虽然在结构和语法上与Java类似,但是,它只是函数式的语言。
客户端的JavaScript必须要有浏览器的支持
JavaScript(ECMAScript)
基础语法
DOM
DocumentObject Model
BOM
BrowerObject Model
JavaScript/jscript/ ECMAScript
avaScript是由Netscape公司开发 .它的前身是LiveScript
Microsoft发行jscript用于internetexplorer
最初的jscript和javascript差异过大,web程序员不得不痛苦的为两种浏览器编写两种脚本。于是诞生了ECMAScript,是一种国际标准化的javascript版本。现在的主流浏览器都支持这种版本。
三、 ECMAScript
ECMAScript并不与任何具体浏览器相绑定
一个完整的JavaScript实现是由以下3个不同部分组成的:
核心(ECMAScript)
文档对象模型(DOM);
浏览器对象模型(BOM)。
检查错误:IE-Internet-高级-禁用脚本调试-显示每个脚本错误通知
四、在网页中加入JavaScript
通过在网页中加入<Script>…</Script>标记JavaScript的开始和结束,将JavaScript代码放到<Script>…</Script>之间
也可以引入一个外部的JavaScript文件,这个JavaScript文件一般以.js作为扩展名
原则上,放在<head></head>之间。但视情况可以放在网页的任何部分
一个页面可以有几个<Script>…</Script,不同部分的方法和变量,可以共享。
五、JavaScript的数据类型
Theprimary (primitive) data types are:
String
Number
Boolean
Thecomposite (reference) data types are:
Object
Array
Thespecial data types are:
Null
Undefined(var a;)
六、控制字符
JavaScript中有些以反斜杠(\)开头的不可显示的特殊字符。通常称为控制字符。
\b:表示退格符。
\f:表示换页。
\n:表示换行符。
\r:表示回车符。
\t:表示Tab符号。
\':表示单引号本身。
\":表示双引号本身。
七、JavaScript基本语法
变量
JavaScript是一门弱类型的语言,所有的变量定义均以var来实现
JavaScript的变量建议先定义,再使用
JavaScript区分大小写
虽然JavaScript可以不需定义即可直接使用变量,但不建议这么做
数组定义
vararr = new Array(3);
通过arr.length取得数组的长度
注释的写法和java的一样
八、数组
使用方式:
myarray=newArray(num)
myarray=newArray(value1,value2…)
<Scriptlanguage="JavaScript">
aa= new Array(3);
aa[20]= 444;
document.write(aa[20]);
</Script>
num不设定,则按数组默认的最大长度自动设定。例如:
<Scriptlanguage="JavaScript">
aa= new Array();
aa[20]= 444;
document.write(aa.length);
</Script>
九、JavaScript基本语法—运算符
算术运算
+、-、*、/
>、<、=、>=、<=、==
逻辑运算
与:&&
或:||
非:!
字符串运算符
连接运算:+
取子集:substring(index1,index2)
条件表达式
条件?A:B
十、JavaScript基本语法—substring 方法
返回位于String对象中指定位置的子字符串。
strVariable.substring(start,end)
"StringLiteral".substring(start,end)
参数
start
指明子字符串的起始位置,该索引从 0 开始起算。
end
指明子字符串的结束位置,该索引从 0 开始起算。
说明
substring方法将返回一个包含从start到最后(不包含end)的子字符串的字符串。
substring方法使用start和end两者中的较小值作为子字符串的起始点。例如,strvar.substring(0, 3)和strvar.substring(3, 0)将返回相同的子字符串。
如果start或end为NaN或者负数,那么将其替换为0。
子字符串的长度等于start和end之差的绝对值。例如,在strvar.substring(0,3)和strvar.substring(3, 0)返回的子字符串的的长度是 3。
十一、JavaScript基本语法—控制语句
if语句
if(条件) else if(条件1) else…
while语句
while(条件)…
switch语句
switch(i) case i1:… casei2:… default:…
for
do…while
while
十二、JavaScript基本语法—JavaScript内置类型
typeof返回值有六种可能: "number," "string," "boolean,""object," "function," 和"undefined."
typeof操作符
typeof运算符返回一个用来表示表达式的数据类型的字符串。
我们知道,javascript是一种弱类型的语言,这意味着我们不必显式定义变量的数据类型。事实上,我们无法在 javascript 上明确地定义数据类型。而只能通过var语句显示声明变量:var myvar;或这样隐式声明变量:myvar=myvarValue(省略var,在声明的同时初始化)。
javascript有三种基本数据类型(字符串、数值、布尔 ),两种引用数据类型(对象、数组)和两种特殊数据类型(Null 、Undefined )。对于基本数据类型和引用数据类型我们很好理解。对于特殊数据类型Null和Undefined,常常会引起我们的一些疑惑。
在 Javascript 中数据类型 Null 只有一个值:null。如果一个变量的值为null,那么表示该变量没有保存有效的数、字符串、Boolean、数组或对象,null与vbscript中Empty的概念不相同(Empty指未初始化的变量值)。因此,我们可以通过给一个变量赋 null 值来清除变量的内容。
如果已声明了一个变量但还没有初始化,那么该变量的值就是 undefined。这与vbscript中Empty的概念是相同的。
如下情况使返回undefined 值:
1、对象属性不存在;
2、声明了变量但从未赋值。
注意:很多人常犯的一个错误是:当他定义一个变量的时候未初始化,想当然地认为该变量的默认值为数字0或字符串""。
十三、JavaScript基本语法—字符串对象
属性:length
方法:
字体控制:
big() blink() bold()fixed()将字体设定为固定宽度字体
fontcolor(color) fontsize(size) Italics() 斜体small()
anchor() 产生一个链接点(anchor)以作超级链接用。anchor函数设定的链接点的名称,另一个函数link设定的URL地址。
字符串:
toLowerCase()toUpperCase() indexOf(char,fromIndex) substring(start,end
十四、JavaScript基本语法—substring、indexOf
substring(start,end)
返回字符串的子字符串
indexOf[charactor,fromIndex]
字符搜索
十五、JavaScript基本语法—Math对象
常用方法:
abs() 绝对值
sin(), cos() 正弦余弦值
asin(), acos() 反正弦反余弦
tan(), atan() 正切反正切
round() 四舍五入
sqrt() 平方根
pow(x,y) x的y次方
十六、JavaScript基本语法—Date对象
创建方式:
myDate= new Date();
日期起始值:1970年1月1日00:00:00
主要方法
getYear():返回年数 setYear(): 设置年数
getMonth():返回月数 setMonth():设置月数
getDate(): 返回日数 setDate():设置日数
getDay():返回星期几 setDay():设置星期数
getHours():返回小时数 setHours():设置小时数
getMinutes():返回分钟数 setMintes():设置分钟数
getSeconds():返回秒数 setSeconds():设置秒数
getTime(): 返回毫秒数 setTime() :设置毫秒数
十七、JavaScript基本语法—函数
函数的使用
利用function来定义一个函数
传入参数
传出值
十八、JavaScript事件处理
onFocus:在用户为了输入而选择select、text、textarea等时
onBlur:在select、text、password、textarea失去焦点时
onChange:在select、text、textarea的值被改变且失去焦点时
onClick:在一个对象被鼠标点中时(button,checkbox,radio,link,reset,submit,text,textarea等)
onLoad:出现在一个文档完成对一个窗口的载入时
onUnload:当用户退出一个文档时
onMouseOver:鼠标被移动到一个对象上时
onMouseOut:鼠标从一个对象上移开时
onSelect:当form对象中的内容被选中时
onSubmit:出现在用户通过提交按钮提交一个表单时
十九、JavaScript的对话框
警告框(alert):出现一个提示信息
询问框(prompt):返回输入的值(很少用)
确认框(confirm):根据不同的选择,返回true/false
二十、使用eval
eval()函数可计算某个字符串,并可执行其中的的 JavaScript 代码。
不使用eval
alert("3"+"2");
--〉32
使用eval的上下文环境
alert(eval("3") + eval("2"));
--〉5
eval()函数可以把一个字符串当作一个JavaScript表达式一样去执行它
该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此请不要为 eval() 函数传递 String 对象来作为参数。
二十一、javascript hijacking
函数劫持
通过替换js函数的实现来达到劫持这个函数调用的目的
本来类似Java的对原函数的重写。但还有其他功能,这个就有点厉害了,貌似和网络安全关系挺大。
二十二、this指的是当前的对象
函数调用时使用this
自定义对象,随时可以增加属性,方法
定义类
二十三、对象
for…in
In后跟一个对象,对此对象中的所有元素循环一次
with
为一段代码建立一个缺省的对象,任何无对象的属性引用,都将使用该缺省的对象
new
用于生成一个新的对象
二十四、JavaScript 错误 - Throw、Try 和 Catch
try语句测试代码块的错误。
catch语句处理错误。
throw语句创建自定义错误。
错误一定会发生
当 JavaScript 引擎执行JavaScript 代码时,会发生各种错误:
可能是语法错误,通常是程序员造成的编码错误或错别字。
可能是拼写错误或语言中缺少的功能(可能由于浏览器差异)。
可能是由于来自服务器或用户的错误输出而导致的错误。
当然,也可能是由于许多其他不可预知的因素。
JavaScript抛出错误
当错误发生时,当事情出问题时,JavaScript 引擎通常会停止,并生成一个错误消息。
描述这种情况的技术术语是:JavaScript将抛出一个错误。
JavaScript测试和捕捉
try语句允许我们定义在执行时进行错误测试的代码块。
catch语句允许我们定义当 try 代码块发生错误时,所执行的代码块。
JavaScript语句 try 和 catch 是成对出现的。
语法
try
{
//在这里运行代码
}
catch(err)
{
//在这里处理错误
}
二十五、setTimeout、setInterval
定义和用法
setTimeout()方法用于在指定的毫秒数后调用函数或计算表达式。
setInterval()方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。
setInterval()方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。
语法
setTimeout(code,millisec)
setInterval(code,millisec[,"lang"])
参数
setTimeout
code 必需。要调用的函数后要执行的JavaScript 代码串。
millisec 必需。在执行代码前需等待的毫秒数。
setInterval
code 必需。要调用的函数或要执行的代码串。
millisec 必须。周期性执行或调用 code 之间的时间间隔,以毫秒计。
提示和注释
提示:setTimeout()只执行 code 一次。如果要多次调用,请使用 setInterval() 或者让 code 自身再次调用 setTimeout()。
返回值
setInterval
一个可以传递给Window.clearInterval() 从而取消对 code 的周期性执行的值。