韩顺平javascript笔记全套解析Word格式.docx
- 文档编号:19625904
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:62
- 大小:3.11MB
韩顺平javascript笔记全套解析Word格式.docx
《韩顺平javascript笔记全套解析Word格式.docx》由会员分享,可在线阅读,更多相关《韩顺平javascript笔记全套解析Word格式.docx(62页珍藏版)》请在冰豆网上搜索。
scripttype=”text/javascript”>
****************************************************************************************<
noscript>
/noscript>
是一种防御性编码,如果用户的浏览器不支持javascript或者是设置过高的安全级别,那么就会显示出相应的提示洗洗,避免了在用户不知情下停止运行或者的都错误结果。
*******************************************************************************
(2)在javascript中用分号表示一个语句的结束
(3)Javascript是弱类型语言。
什么叫做弱类型语言。
在强类型语言中,使用变量之前,必须先声明变量的类型,才能使用。
而javascript则不需要这样使用。
5.案例1:
你的第一个程序,javascript高手都是从这里开始的,这个程序完成一个非常简单功能,在网页中弹出一个对话框,显示“helloworld!
”
(1)js的位置:
js的位置可以随意,但是一般用在<
标签
(2)js必须用
scriptlanguage=”javascript”>
js代码
☞如果没有使用<
包含起来的话,则浏览器则会视为普通文本
6.案例2:
对前面的程序,改成一个简单加法运算程序
◆js的变量的类型是怎样决定?
(1)js的数据类型是弱数据类型语言。
即在定义变量的时候,统一使用var表示,甚至可以去掉var关键字
(2)js中的数据类型是有js引擎来决定的。
数据类型可以变化的。
varname=”shopping”;
//js引擎知道name是字符串
name=22;
//这时name自动变成了数
varkk=2;
//kk是整数
varyy;
//y是undefined类型
7.javascript中的标识符
标识符指的是javascript中定义的符号,例如,变量名,函数名,数组名等。
标识符可以有任意顺序的大小小字母、数字,下划线和美元符号($)组成,但是标识符不能以数字开头,不能是javascript的保留关键字。
8.javascript是严格区分大小写的。
javascript中每条语句用分号“;
”结束。
9.注释:
单行注释//多行注释/**/
10.javascript的基本语法---数据类型:
Ø
基本数据类型:
通过typeof关键字,可以看到数据的类型
(1)Number(数值类型)
✧整型常量(10进制\8进制\16进制)
16进制以0x或者是0X开头,例如:
0x83;
8进制必须以0开头:
✧实型常量
12.32193.985E7等
✧特殊数值:
NaN(notisanumber)、Infinity、isNaN()、isFinite()
(2)Boolean(布尔类型)
true和false
(3)String字符串
“thisisabook”
复合数据类型:
特殊数据类型:
(1)undefine的例子:
scriptlanguage="
javascript"
>
vara;
window.alert("
a的数据类型"
+typeofa);
(2)null的例子:
vara=null;
11.javascript的基本语法---定义变量、初始化、赋值:
(1)定义变量:
vara;
(2)初始化变量:
在定义变量的时候,就赋值:
vara=45;
(3)给变量赋值:
先定义变量:
varnum;
再赋值:
num=33
12.javascript的基本语法---数据类型转换:
(1)自动转换:
javascript的数据类型是动态的
请看一个案例:
//num先定义成Number数据类型
varnum=22;
num="
helloword"
;
window.alert("
num的数据类型"
+typeofnum);
<
(2)强制转换:
请看案例:
如何将字符串转换成数字
//num先定义成String数据类型
vars="
123"
varnum=parseInt(s);
window.alert(typeofnum);
13.javascript中的运算符和java中的一样的,但是有几个注意点:
(1)案例一:
b先转成9,在比较
vara=9;
varb=’9’
if(a==b){
window.alert(“ok”);
}else{
window.alert(“faile”);
}
(2)在逻辑运算中,0、“”、false、null、undefined、NaN均表示false
vara=0;
if(a){
14.函数:
为完成某一个功能的代码的集合。
函数定义:
函数名位于关键字function之后,为了让代码易于理解,函数名应具有一定的意义。
注意点:
函数没有返回值类型。
形参数不写具体的类型。
15.eval()可以将一个字符串当成一个脚本运行
例如:
scriptlanguage=”javascript”type=”text/javascript”>
varstr=”window.alert(“ok”)”;
eval(str);
16.escape()可以将中文或日文转为ascii码:
unescape()反之。
一般这个函数相互配合,防止在浏览器中出现乱码:
varstr=”江西”;
varstr2=escape(str);
//转回来
varstr3=unescape(str2);
17.数组:
(1)为什么需要数组?
将一组数据放在一起,组成集合。
它由一对方括号[]包围,数组的每个元素用逗号分隔,数组元素可以是任意类型的数据
(2)创建数组:
var数组名=[元素值,元素值,```]
vara=[“shopping”,123,1.1,4.5,true]
(3)二维数组:
vara=[[1,2,3],[“hello”,”world”,”jiangxi”]]
=============================================================================================================================================================================================================================================
Js面向(基于)对象编程
一、⊙澄清概念
js中基于对象==js面向对象
js中没有类class,但是它取了一个新的名字叫原型对象,因此,类==原型对象
二、⊙为什么需要对象
问题提出:
/*
张老太养了两只猫:
一只名字叫小白,今年3岁,白色,还有一只叫小花,今年10岁,花色。
请编写一个程序,当用户输入小猫的名字时,就显示该猫的名字,年龄,颜色。
如果用户输入小猫的名字错误时,则显示张老太没有这只猫猫。
*/
//传统方法比较麻烦
cat1_name="
小白"
varcat1_age=3;
varcat1_color="
白色"
//解决办法,把猫的属性集中,创建一种新的数据类(原型对象/类)
//用面向对象的方法来解决上面的问题
//这里就是一个类cat类
functioncat(){
}
//如果这样用
//cat()//函数
varcat1=newcat()//类
//这时cat1就是一个对象(实例)
cat1.name="
cat1.age=3;
cat1.color="
//从上面的代码我们可以看出
//1.js中的对象的属性可以动态添加
//2.属性没有限制
window.alert(cat1.name+cat1.age+cat1.color+cat.hobby);
三、⊙类(原型对象)和对象的区别和联系
(1)类是抽象的,概念,代表类事物
(2)对象是具体的,体表一个实体
(3)对象是以类(原型对象)为模板创建起来的实体
四、⊙创建对象的方式有五种
(1)工厂方法—使用newObject创建对象并添加相关属性.
(2)使用构造函数来定义类(原型对象).
(3)使用prototype
(4)构造函数及原型混合方式.
(5)动态原型方式.
目前我们先讲使用构造函数来定义类(原型对象),然后再创建对象实例.
基本语法:
function类名/原型对象(){
创建对象:
var对象名=new类名()
现在对对象特别说明:
1.js中一切都是对象
functionPerson(){}
window.alert(Person.constructor);
vara=newPerson();
window.alert(a.constructor);
//a对象实例的构造函数
window.alert(typeofa);
//a的类型是什么
varb=123;
window.alert(b.constructor);
window.alert(typeofb);
varc="
window.alert(c.constructor);
window.alert(typeofc);
//思考:
如何判断一个对象实例是不是Person类型?
if(ainstanceofPerson){
a是Person1"
);
if(a.constructor==Person){
a是Person2"
五、⊙补充说明(全局变量与局部变量的区别)
//全局变量
varabc=89;
functiontest(){
//在函数里,如果不带var,则表示使用全局的abc变量
//如果带var,则表示在test()中,定义了一个新的abc变量(局部变量)
abc=900;
test();
window.alert(abc);
访问对象的属性有两种方法:
(1)普通方式
对象名.属性名
(2)动态访问
对象名[“属性名”]
functionperson(){}
varp1=newperson();
p1.name="
阿华"
window.alert(p1.name);
//普通方式
window.alert(p1["
name"
]);
varval="
na"
+"
me"
window.alert(p1[val]);
//动态方式
对象引用问题的说明(图)
js还提供一种方式,主动释放对象内存
delete对象名.属性、;
//这样就会立即释放对象的这个属性的空间
六、⊙this
◇问题的提出:
functionPerson(){};
varp1=newPerson();
p1.name="
老韩"
p1.age=30;
window.alert(p1.name+"
"
+p1.age);
varp2=newPerson();
window.alert(p2.name);
//这里会输出什么呢?
(undefine);
这里我们可以看到window.alert(p2.name)会输出undefined
在实际编程中,我们可能有这样的需求,当我们创建一个对象后,就希望该对象自动的拥有某些属性
[比如:
当我们创建一个Person对象后,就希望该对象自动拥有name和age属性,这又怎么办?
]
◇使用this来解决
functionPerson(){
this.name="
abc"
this.age=30;
varp1=newPerson();
+p2.name);
◇可能有人会这样去思考问题
//***有些同学可能会这么想:
varname="
//私有的,只能在内部使用
varage=30;
this.name2="
abc2"
//this.name2表示name2这个属性是公开的
this.show=function(){//函数这就是Person类里面的一个公开的方法
+name+"
age"
+age);
functionshow2(){//这就是Person类里面的一个私有的方法,只能在类内部使用,
//如要一定要使用,只能通过公开方法(特权方法)来调用私有方法来实现
show2()"
p1.show();
//p1.show2();
//这里会报错
//window.alert(p1.name+"
//错误的
记住一句话:
哪个对象实例调用this所有的函数,那么this就代表哪个对象实例
This注意事项:
This不能放在类的外部使用,否则调用就变成window调用了
◇对象---成员函数
给一个对象添加(指定)函数的几种方式
1.通用常用方式:
this.show=function(){
name:
"
+this.name+"
age:
+this.age);
2.方式二:
functionshow1(){
window.alert(show1);
//这个解释下面的p2.show=show2的疑惑.这个输出的是上面
//的函数代码.(构造函数)
p2.show=show1;
//记住不要加括号
p2.show();
3.方式三:
varp3=newPerson();
p3.show=functionshow2(){
p3.show();
加强思考题看它们会输出什么?
题1.
+this.name);
show1();
//注意思考会输出什么?
提示谁调用它.this就代表谁
答案:
空白(undefined)
题2.
Varname="
nane:
abc2
4.方式四:
前几种方法有一个问题,那就是以上对象独占函数代码,这样如果对象过多,则会影响效率,js设计者,给我们提供了别一个方法,原型法:
这样多个对象可以共享函数代码,代码如下:
functiondog(){
//使用prototype去绑定一个函数给shout
dog.prototype.shout=function(){
window.alert('
小狗'
vardog1=newdog();
dog1.shout();
vardog2=newdog();
dog2.shout();
//ok
window.alert(dog1.shout==dog2.shout);
//返回true
//扩展
vardog3=newdog();
vardog4=newdog();
vardog5=dog4;
window.alert(dog3==dog4);
//false不是同一个地址
window.alert(dog4==dog5);
//true
对代码原理说明图:
补讲==号的作用
1.当==的两边都是字符串的时候,则比较内容相等否。
2.如==的两边都是数字的时候,则数的大小是否相等。
3.如==的两边是对象或对象中的函数属性,则比较地址是否相等。
六、加深对类和对象的认识
如何给类添加方法(如何给某类型的所有对象添加方法)
//创建Person实例
varP1=newPerson();
P1.name="
sp"
window.alert(P1.name);
//初步体验Object类,通过Object直接创建对象//Object超类
varP1=newObject();
window.alert(P1.constructor);
vari=newNumber(10);
//我们可以给类添加方法.
Number.prototype.add=function(a){
returnthis+a;
window.alert(i.add(10).add(30));
varb=90;
window.alert(b.add(40));
请思考给js的Array对象扩展一个find(val)方法,当一个Array对象调用该方法
时候,如果能找到val则返回其下标,否则返回-1;
//体验一下array;
vararr=newArray(3)
arr[0]="
George"
arr[1]="
John"
arr[2]="
Thomas"
//遍历该数组
for(vari=0;
i<
arr.length;
i++){
document.write('
'
+arr[i]+"
&
nbsp;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 顺平 javascript 笔记 全套 解析